msync
Version:
Easily manage building and syncing multiple node-modules in a flexibly defined workspace.
233 lines • 17.9 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = (this && this.__generator) || function (thisArg, body) {
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t;
return { next: verb(0), "throw": verb(1), "return": verb(2) };
function verb(n) { return function (v) { return step([n, v]); }; }
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) try {
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [0, t.value];
switch (op[0]) {
case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false };
case 5: _.label++; y = op[1]; op = [0]; continue;
case 7: op = _.ops.pop(); _.trys.pop(); continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
if (t[2]) _.ops.pop();
_.trys.pop(); continue;
}
op = body.call(thisArg, _);
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
}
};
Object.defineProperty(exports, "__esModule", { value: true });
var common_1 = require("../common");
var listCommand = require("./ls.cmd");
exports.name = 'bump';
exports.alias = 'b';
exports.description = 'Bumps a module version along with it\'s entire dependency graph.';
exports.args = {
'-i': 'Include ignored modules.',
'-d': 'Dry run where no files are saved.',
'-l': 'Local versions only. Does not retrieve NPM details.',
};
function cmd(args) {
return __awaiter(this, void 0, void 0, function () {
var options;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
options = (args && args.options) || {};
return [4 /*yield*/, bump({
includeIgnored: options.i || false,
local: options.l || false,
dryRun: options.d || false,
})];
case 1:
_a.sent();
return [2 /*return*/];
}
});
});
}
exports.cmd = cmd;
function bump(options) {
if (options === void 0) { options = {}; }
return __awaiter(this, void 0, void 0, function () {
var _a, includeIgnored, _b, local, _c, dryRun, save, npm, settings, modules, module, dependants, release, tableBuilder;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
_a = options.includeIgnored, includeIgnored = _a === void 0 ? false : _a, _b = options.local, local = _b === void 0 ? false : _b, _c = options.dryRun, dryRun = _c === void 0 ? false : _c;
save = !dryRun;
npm = !local;
return [4 /*yield*/, common_1.loadSettings({ npm: npm, spinner: npm })];
case 1:
settings = _d.sent();
if (!settings) {
common_1.log.warn.yellow(common_1.constants.CONFIG_NOT_FOUND_ERROR);
return [2 /*return*/];
}
modules = settings
.modules
.filter(function (pkg) { return common_1.filter.includeIgnored(pkg, includeIgnored); });
return [4 /*yield*/, promptForModule(modules)];
case 2:
module = _d.sent();
if (!module) {
return [2 /*return*/];
}
dependants = common_1.dependsOn(module, modules);
listCommand.printTable([module], { includeIgnored: true, dependants: dependants });
if (dryRun) {
common_1.log.info.gray("Dry run...no files will be saved.\n");
}
return [4 /*yield*/, promptForReleaseType(module.version)];
case 3:
release = _d.sent();
if (!release) {
return [2 /*return*/];
}
common_1.log.info();
return [4 /*yield*/, bumpModule({
release: release,
pkg: module,
allModules: modules,
save: save,
})];
case 4:
tableBuilder = _d.sent();
tableBuilder.log();
if (dryRun) {
common_1.log.info.gray("\nNo files were saved.");
}
else {
common_1.log.info();
}
return [2 /*return*/];
}
});
});
}
exports.bump = bump;
function bumpModule(options) {
return __awaiter(this, void 0, void 0, function () {
var release, pkg, allModules, save, _a, level, ref, dependants, version, isRoot, head, tableBuilder, msg, json, _i, dependants_1, dependentPkg;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
release = options.release, pkg = options.pkg, allModules = options.allModules, save = options.save, _a = options.level, level = _a === void 0 ? 0 : _a, ref = options.ref;
dependants = common_1.dependsOn(pkg, allModules);
version = common_1.semver.inc(pkg.latest, release);
isRoot = ref === undefined;
head = ['update', 'module', 'version', 'ref updated'].map(function (title) { return common_1.log.gray(title); });
tableBuilder = options.table || common_1.table({ head: head });
if (!ref) {
msg = '';
msg += " " + common_1.log.yellow(release.toUpperCase()) + " ";
msg += "update " + common_1.log.cyan(pkg.name) + " from " + common_1.log.gray(pkg.latest) + " " + common_1.log.gray('=>') + " " + common_1.log.magenta(version) + " ";
common_1.log.info.gray(msg);
}
else {
tableBuilder
.add([
common_1.log.yellow(release.toUpperCase()),
common_1.log.cyan(pkg.name),
common_1.log.gray(pkg.latest + " => " + common_1.log.magenta(version)),
common_1.log.gray(common_1.log.cyan(ref.name) + " " + ref.fromVersion + " => " + common_1.log.magenta(ref.toVersion)),
]);
}
json = common_1.R.clone(pkg.json);
json.version = version;
if (!save) return [3 /*break*/, 2];
return [4 /*yield*/, common_1.savePackage(pkg.dir, json)];
case 1:
_b.sent();
_b.label = 2;
case 2:
if (isRoot && dependants.length > 0) {
common_1.log.info.gray('\nDependant modules:');
}
_i = 0, dependants_1 = dependants;
_b.label = 3;
case 3:
if (!(_i < dependants_1.length)) return [3 /*break*/, 7];
dependentPkg = dependants_1[_i];
return [4 /*yield*/, common_1.updatePackageRef(dependentPkg, pkg.name, version, { save: save })];
case 4:
_b.sent();
return [4 /*yield*/, bumpModule({
release: 'patch',
pkg: dependentPkg,
allModules: allModules,
level: level + 1,
ref: { name: pkg.name, fromVersion: pkg.latest, toVersion: version },
save: save,
table: tableBuilder,
})];
case 5:
_b.sent();
_b.label = 6;
case 6:
_i++;
return [3 /*break*/, 3];
case 7: return [2 /*return*/, tableBuilder];
}
});
});
}
function promptForModule(modules) {
return __awaiter(this, void 0, void 0, function () {
var choices, confirm, name;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
choices = modules.map(function (pkg) { return ({ name: pkg.name, value: pkg.name }); });
confirm = {
type: 'list',
name: 'name',
message: 'Select a module',
choices: choices,
};
return [4 /*yield*/, common_1.inquirer.prompt(confirm)];
case 1:
name = (_a.sent()).name;
return [2 /*return*/, modules.find(function (pkg) { return pkg.name === name; })];
}
});
});
}
function promptForReleaseType(version) {
return __awaiter(this, void 0, void 0, function () {
var choices, confirm;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
choices = ['patch', 'minor', 'major'];
confirm = {
type: 'list',
name: 'name',
message: 'Release',
choices: choices,
};
return [4 /*yield*/, common_1.inquirer.prompt(confirm)];
case 1: return [2 /*return*/, (_a.sent()).name];
}
});
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC5jbWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY21kcy9idW1wLmNtZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsb0NBY21CO0FBQ25CLHNDQUF3QztBQUUzQixRQUFBLElBQUksR0FBRyxNQUFNLENBQUM7QUFDZCxRQUFBLEtBQUssR0FBRyxHQUFHLENBQUM7QUFDWixRQUFBLFdBQVcsR0FBRyxrRUFBa0UsQ0FBQztBQUNqRixRQUFBLElBQUksR0FBRztJQUNsQixJQUFJLEVBQUUsMEJBQTBCO0lBQ2hDLElBQUksRUFBRSxtQ0FBbUM7SUFDekMsSUFBSSxFQUFFLHFEQUFxRDtDQUM1RCxDQUFDO0FBUUYsYUFDRSxJQU9DOztZQUVLLE9BQU87Ozs7OEJBQUcsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQzVDLHFCQUFNLElBQUksQ0FBQzs0QkFDVCxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLOzRCQUNsQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLOzRCQUN6QixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLO3lCQUMzQixDQUFDLEVBQUE7O29CQUpGLFNBSUUsQ0FBQzs7Ozs7Q0FDSjtBQWhCRCxrQkFnQkM7QUFlRCxjQUEyQixPQUFzQjtJQUF0Qix3QkFBQSxFQUFBLFlBQXNCOztnQkFDdkMsY0FBYyxNQUFVLEtBQUssTUFBVSxNQUFNLEVBQy9DLElBQUksRUFDSixHQUFHLFlBTUgsT0FBTyxVQVNQLFVBQVU7Ozs7eUJBakJrRCxPQUFPLGtEQUFoRCxLQUFLLFlBQW9DLE9BQU8sZ0NBQWpDLEtBQUssWUFBcUIsT0FBTyxrQ0FBakIsS0FBSzsyQkFDaEQsQ0FBQyxNQUFNOzBCQUNSLENBQUMsS0FBSztvQkFDRCxxQkFBTSxxQkFBWSxDQUFDLEVBQUUsR0FBRyxLQUFBLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUE7OytCQUF6QyxTQUF5QztvQkFDMUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO3dCQUNkLFlBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFTLENBQUMsc0JBQXNCLENBQUMsQ0FBQzt3QkFDbEQsTUFBTSxnQkFBQztvQkFDVCxDQUFDOzhCQUNlLFFBQVE7eUJBQ3JCLE9BQU87eUJBQ1AsTUFBTSxDQUFDLFVBQUMsR0FBRyxJQUFLLE9BQUEsZUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsY0FBYyxDQUFDLEVBQTFDLENBQTBDLENBQUM7b0JBRy9DLHFCQUFNLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFBQTs7NkJBQTlCLFNBQThCO29CQUM3QyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQUMsTUFBTSxnQkFBQztvQkFBQyxDQUFDO2lDQUdMLGtCQUFTLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQztvQkFDN0MsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxVQUFVLFlBQUEsRUFBRSxDQUFDLENBQUM7b0JBQ3ZFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7d0JBQ1gsWUFBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztvQkFDdkQsQ0FBQztvQkFHZSxxQkFBTSxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUE7OzhCQUExQyxTQUEwQztvQkFDMUQsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO3dCQUFDLE1BQU0sZ0JBQUM7b0JBQUMsQ0FBQztvQkFHekIsWUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNVLHFCQUFNLFVBQVUsQ0FBQzs0QkFDcEMsT0FBTyxTQUFBOzRCQUNQLEdBQUcsRUFBRSxNQUFNOzRCQUNYLFVBQVUsRUFBRSxPQUFPOzRCQUNuQixJQUFJLE1BQUE7eUJBQ0wsQ0FBQyxFQUFBOzttQ0FMbUIsU0FLbkI7b0JBQ0YsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO29CQUVuQixFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO3dCQUNYLFlBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7b0JBQzFDLENBQUM7b0JBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ04sWUFBRyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNiLENBQUM7Ozs7O0NBQ0Y7QUEzQ0Qsb0JBMkNDO0FBY0Qsb0JBQTBCLE9BQXFCOztZQUVyQyxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxJQUFJLE1BQUUsS0FBSyxFQUFNLEdBQUcsRUFDaEQsVUFBVSxFQUNWLE9BQU8sRUFDUCxNQUFNLEVBR04sSUFBSSxFQUNKLFlBQVksRUFHWixHQUFHLEVBZ0JILElBQUksb0JBV0MsWUFBWTs7Ozs4QkFyQ29DLE9BQU8sZ0JBQVAsT0FBTyxtQkFBUCxPQUFPLG9CQUFQLE9BQU8sWUFBUCxPQUFPLGdDQUFsQixDQUFDLGFBQVUsT0FBTztpQ0FDL0Msa0JBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDOzhCQUM3QixlQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDOzZCQUNoQyxHQUFHLEtBQUssU0FBUzsyQkFHbkIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQyxLQUFLLElBQUssT0FBQSxZQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFmLENBQWUsQ0FBQzttQ0FDdEUsT0FBTyxDQUFDLEtBQUssSUFBSSxjQUFLLENBQUMsRUFBRSxJQUFJLE1BQUEsRUFBRSxDQUFDO29CQUVyRCxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7OEJBQ0MsRUFBRTt3QkFDWixHQUFHLElBQUksT0FBSyxZQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFHLENBQUM7d0JBQ2pELEdBQUcsSUFBSSxZQUFVLFlBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFTLFlBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxTQUFJLFlBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQUksWUFBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBRyxDQUFDO3dCQUM5RyxZQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDckIsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDTixZQUFZOzZCQUNULEdBQUcsQ0FBQzs0QkFDSCxZQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQzs0QkFDakMsWUFBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDOzRCQUNsQixZQUFHLENBQUMsSUFBSSxDQUFJLEdBQUcsQ0FBQyxNQUFNLFlBQU8sWUFBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUcsQ0FBQzs0QkFDcEQsWUFBRyxDQUFDLElBQUksQ0FBSSxZQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBSSxHQUFHLENBQUMsV0FBVyxZQUFPLFlBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRyxDQUFDO3lCQUN0RixDQUFDLENBQUM7b0JBQ1AsQ0FBQzsyQkFJWSxVQUFDLENBQUMsS0FBSyxDQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO3lCQUNuQixJQUFJLEVBQUosd0JBQUk7b0JBQ04scUJBQU0sb0JBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFBOztvQkFBaEMsU0FBZ0MsQ0FBQzs7O29CQUluQyxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUNwQyxZQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO29CQUN4QyxDQUFDOzs7O3lCQUUwQixDQUFBLHdCQUFVLENBQUE7O29CQUNuQyxxQkFBTSx5QkFBZ0IsQ0FBQyxZQUFZLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQUEsRUFBRSxDQUFDLEVBQUE7O29CQUFqRSxTQUFpRSxDQUFDO29CQUNsRSxxQkFBTSxVQUFVLENBQUM7NEJBQ2YsT0FBTyxFQUFFLE9BQU87NEJBQ2hCLEdBQUcsRUFBRSxZQUFZOzRCQUNqQixVQUFVLFlBQUE7NEJBQ1YsS0FBSyxFQUFFLEtBQUssR0FBRyxDQUFDOzRCQUNoQixHQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFOzRCQUNwRSxJQUFJLE1BQUE7NEJBQ0osS0FBSyxFQUFFLFlBQVk7eUJBQ3BCLENBQUMsRUFBQTs7b0JBUkYsU0FRRSxDQUFDOzs7b0JBVnNCLElBQVUsQ0FBQTs7d0JBWXJDLHNCQUFPLFlBQVksRUFBQzs7OztDQUNyQjtBQUlELHlCQUErQixPQUFrQjs7WUFDekMsT0FBTyxFQUNQLE9BQU87Ozs7OEJBREcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFDLEdBQUcsSUFBSyxPQUFBLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQXJDLENBQXFDLENBQUM7OEJBQzNEO3dCQUNkLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxNQUFNO3dCQUNaLE9BQU8sRUFBRSxpQkFBaUI7d0JBQzFCLE9BQU8sU0FBQTtxQkFDUjtvQkFDYSxxQkFBTSxpQkFBUSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBQTs7MkJBQS9CLENBQUMsU0FBOEIsQ0FBQyxDQUFDLElBQUk7b0JBQ2xELHNCQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBQyxHQUFHLElBQUssT0FBQSxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksRUFBakIsQ0FBaUIsQ0FBQyxFQUFDOzs7O0NBQ2pEO0FBSUQsOEJBQW9DLE9BQWU7O1lBQzNDLE9BQU8sRUFDUCxPQUFPOzs7OzhCQURHLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUM7OEJBQzNCO3dCQUNkLElBQUksRUFBRSxNQUFNO3dCQUNaLElBQUksRUFBRSxNQUFNO3dCQUNaLE9BQU8sRUFBRSxTQUFTO3dCQUNsQixPQUFPLFNBQUE7cUJBQ1I7b0JBQ08scUJBQU0saUJBQVEsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUE7d0JBQXRDLHNCQUFPLENBQUMsU0FBOEIsQ0FBQyxDQUFDLElBQUksRUFBQzs7OztDQUM5QyJ9