UNPKG

ionic-version

Version:

Version your Ionic app in a `npm version` fashion.

139 lines (105 loc) 3.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.version = version; var _cordovaConfig = require("cordova-config"); var _cordovaConfig2 = _interopRequireDefault(_cordovaConfig); var _chalk = require("chalk"); var _chalk2 = _interopRequireDefault(_chalk); var _child_process = require("child_process"); var _child_process2 = _interopRequireDefault(_child_process); var _path = require("path"); var _path2 = _interopRequireDefault(_path); var _resolveFrom = require("resolve-from"); var _resolveFrom2 = _interopRequireDefault(_resolveFrom); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } /** * Custom type definition for Promises * @typedef Promise * @property {*} result See the implementing function for the resolve type and description * @property {Error} result Rejection error object */ function log(msg, silent) { if (!silent) { console.log("[IV]", _chalk2.default[msg.style || "reset"](msg.text)); } } /** * Versions your app * @param {Object} program commander/CLI-style options, camelCased * @param {string} projectPath Path to your Ionic project * @return {Promise<string|Error>} A promise which resolves with the last commit hash */ function version(program, projectPath) { var programOpts = Object.assign({}, program || {}); var projPath = _path2.default.resolve(process.cwd(), projectPath || programOpts.args[0] || ""); var appPkgJSONPath = _path2.default.join(projPath, "package.json"); var appPkg = void 0; try { (0, _resolveFrom2.default)(projPath, "@ionic/app-scripts"); appPkg = require(appPkgJSONPath); } catch (err) { if (err.message === "Cannot find module '@ionic/app-scripts'") { log({ style: "red", text: "Is this the right folder? " + err.message + " in " + projPath }); } else { log({ style: "red", text: err.message }); log({ style: "red", text: "Is this the right folder? Looks like there isn't a package.json here." }); } log({ style: "yellow", text: "Pass the project path as an argument, see --help for usage." }); if (program.outputHelp) { program.outputHelp(); } process.exit(1); } var cordovaConfig = new _cordovaConfig2.default(_path2.default.join(projPath, "config.xml")); cordovaConfig.setVersion(appPkg.version); return cordovaConfig.write().then(function () { var gitCmdOpts = { cwd: projPath }; if (programOpts.amend || process.env.npm_lifecycle_event && process.env.npm_lifecycle_event.indexOf("version") > -1 && !programOpts.neverAmend) { log({ text: "Amending..." }, programOpts.quiet); switch (process.env.npm_lifecycle_event) { case "version": _child_process2.default.spawnSync("git", ["add", "."], gitCmdOpts); break; case "postversion": default: _child_process2.default.execSync("git commit -a --amend --no-edit", gitCmdOpts); if (!programOpts.skipTag) { log({ text: "Adjusting Git tag..." }, programOpts.quiet); if (process.platform === "win32") { _child_process2.default.execSync("git tag -f v" + appPkg.version, gitCmdOpts); } else { _child_process2.default.execSync("git tag -f $(git tag --sort=v:refname | tail -1)", gitCmdOpts); } } } } log({ style: "green", text: "Done." }, programOpts.quiet); return _child_process2.default.execSync("git log -1 --pretty=%H", gitCmdOpts).toString(); }).catch(function (err) { if (process.env.IV_ENV === "ava") { console.error(err); } log({ style: "red", text: "Done, with errors." }); process.exit(1); }); } exports.default = version;