UNPKG

msync

Version:

Easily manage building and syncing multiple node-modules in a flexibly defined workspace.

224 lines 16 kB
"use strict"; 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 }; } }; var _this = this; Object.defineProperty(exports, "__esModule", { value: true }); var common_1 = require("../common"); var listCommand = require("./ls.cmd"); var syncCommand = require("./sync.cmd"); exports.name = 'build'; exports.description = 'Builds and syncs all typescript modules in order.'; exports.args = { '-i': 'Include ignored modules.', '-w': 'Sync on changes to files.', }; function cmd(args) { return __awaiter(this, void 0, void 0, function () { var options, watch, includeIgnored; return __generator(this, function (_a) { switch (_a.label) { case 0: options = (args && args.options) || {}; watch = options.w || false; includeIgnored = options.i || false; return [4 /*yield*/, build({ includeIgnored: includeIgnored, watch: watch })]; case 1: _a.sent(); return [2 /*return*/]; } }); }); } exports.cmd = cmd; function build(options) { if (options === void 0) { options = {}; } return __awaiter(this, void 0, void 0, function () { var _a, includeIgnored, _b, watch, settings, modules; return __generator(this, function (_c) { switch (_c.label) { case 0: _a = options.includeIgnored, includeIgnored = _a === void 0 ? false : _a, _b = options.watch, watch = _b === void 0 ? false : _b; return [4 /*yield*/, common_1.loadSettings()]; case 1: settings = _c.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); }) .filter(function (pkg) { return pkg.isTypeScript; }); if (!watch) return [3 /*break*/, 3]; return [4 /*yield*/, buildWatch(modules, includeIgnored)]; case 2: return [2 /*return*/, _c.sent()]; case 3: return [4 /*yield*/, buildOnce(modules)]; case 4: return [2 /*return*/, _c.sent()]; } }); }); } exports.build = build; var tscCommand = function (pkg) { return __awaiter(_this, void 0, void 0, function () { var path; return __generator(this, function (_a) { switch (_a.label) { case 0: path = common_1.fsPath.join(pkg.dir, 'node_modules/typescript/bin/tsc'); return [4 /*yield*/, common_1.fs.existsAsync(path)]; case 1: return [2 /*return*/, (_a.sent()) ? path : 'tsc']; } }); }); }; function buildOnce(modules) { return __awaiter(this, void 0, void 0, function () { var _this = this; var startedAt, tasks, taskList, error_1; return __generator(this, function (_a) { switch (_a.label) { case 0: startedAt = new Date(); tasks = modules.map(function (pkg) { return { title: common_1.log.magenta(pkg.name) + " " + common_1.log.gray('=> sync'), task: function () { return __awaiter(_this, void 0, void 0, function () { var tsc, cmd; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, tscCommand(pkg)]; case 1: tsc = _a.sent(); cmd = "cd " + pkg.dir + " && " + tsc; return [4 /*yield*/, common_1.exec.run(cmd, { silent: true })]; case 2: _a.sent(); return [4 /*yield*/, syncCommand.sync({ includeIgnored: false, updateVersions: false, silent: true })]; case 3: _a.sent(); return [2 /*return*/]; } }); }); }, }; }); _a.label = 1; case 1: _a.trys.push([1, 3, , 4]); taskList = common_1.listr(tasks, { concurrent: false, exitOnError: false }); return [4 /*yield*/, taskList.run()]; case 2: _a.sent(); common_1.log.info.gray('', common_1.elapsed(startedAt)); common_1.log.info(); return [3 /*break*/, 4]; case 3: error_1 = _a.sent(); return [3 /*break*/, 4]; case 4: return [2 /*return*/]; } }); }); } exports.buildOnce = buildOnce; function buildWatch(modules, includeIgnored) { return __awaiter(this, void 0, void 0, function () { var _this = this; return __generator(this, function (_a) { common_1.log.info.magenta('\nBuild watching:'); listCommand.printTable(modules, { includeIgnored: includeIgnored }); common_1.log.info(); modules.forEach(function (pkg) { return __awaiter(_this, void 0, void 0, function () { var tsc, cmd; return __generator(this, function (_a) { switch (_a.label) { case 0: return [4 /*yield*/, tscCommand(pkg)]; case 1: tsc = _a.sent(); cmd = "cd " + pkg.dir + " && " + tsc + " --watch"; common_1.exec .run$(cmd) .forEach(function (data) { var isError = data.text.includes('error'); var text = data.text.replace(/\n*$/, ''); if (!isError) { text = text.substring(text.indexOf(' - ') + 3, text.length); } if (isError) { common_1.table() .add([common_1.log.yellow(pkg.name), formatError(text)]) .log(); } else { common_1.log.info(common_1.log.cyan(pkg.name) + " " + text); } }); return [2 /*return*/]; } }); }); }); return [2 /*return*/]; }); }); } exports.buildWatch = buildWatch; var formatError = function (error) { var MAX = 80; var lines = []; error.split('\n').forEach(function (line) { line = line.length <= MAX ? line : splitLines(line); lines.push(line); }); return lines.join('\n'); }; var splitLines = function (line) { var MAX = 80; var words = []; var count = 0; line.split('').forEach(function (word) { count += word.length; if (count > MAX) { word = word + "\n"; count = 0; } words.push(word); }); return words.join(''); }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQuY21kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NtZHMvYnVpbGQuY21kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlCQTZLQTs7QUE3S0Esb0NBWW1CO0FBQ25CLHNDQUF3QztBQUN4Qyx3Q0FBMEM7QUFFN0IsUUFBQSxJQUFJLEdBQUcsT0FBTyxDQUFDO0FBQ2YsUUFBQSxXQUFXLEdBQUcsbURBQW1ELENBQUM7QUFDbEUsUUFBQSxJQUFJLEdBQUc7SUFDbEIsSUFBSSxFQUFFLDBCQUEwQjtJQUNoQyxJQUFJLEVBQUUsMkJBQTJCO0NBQ2xDLENBQUM7QUFNRixhQUNFLElBTUM7O1lBRUssT0FBTyxFQUNQLEtBQUssRUFDTCxjQUFjOzs7OzhCQUZKLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFOzRCQUM5QixPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUs7cUNBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLO29CQUN6QyxxQkFBTSxLQUFLLENBQUMsRUFBRSxjQUFjLGdCQUFBLEVBQUUsS0FBSyxPQUFBLEVBQUUsQ0FBQyxFQUFBOztvQkFBdEMsU0FBc0MsQ0FBQzs7Ozs7Q0FDeEM7QUFiRCxrQkFhQztBQVdELGVBQTRCLE9BQXNCO0lBQXRCLHdCQUFBLEVBQUEsWUFBc0I7O2dCQUN4QyxjQUFjLE1BQVUsS0FBSyxZQU0vQixPQUFPOzs7O3lCQU5xQyxPQUFPLGtEQUFoQyxLQUFLLFlBQW9CLE9BQU8sZ0NBQWpCLEtBQUs7b0JBQzVCLHFCQUFNLHFCQUFZLEVBQUUsRUFBQTs7K0JBQXBCLFNBQW9CO29CQUNyQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7d0JBQ2QsWUFBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQVMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO3dCQUNs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