UNPKG

component-version-update

Version:

Обновляет версию пакета в файлах package.json, CHANGELOG.md с формированием коммита с изменениями

122 lines 6.03 kB
#!/usr/bin/env node "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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; result["default"] = mod; return result; }; Object.defineProperty(exports, "__esModule", { value: true }); const chalk_1 = __importDefault(require("chalk")); const path_1 = __importDefault(require("path")); const figlet = __importStar(require("figlet")); const commander_1 = __importDefault(require("commander")); const pj = __importStar(require("./package.json")); const fs_1 = __importDefault(require("fs")); const QuestionModule_js_1 = __importDefault(require("./core/QuestionModule.js")); const shelljs_1 = __importDefault(require("shelljs")); const ChangelogModule_js_1 = __importDefault(require("./core/ChangelogModule.js")); const Logger_js_1 = __importDefault(require("./core/Logger.js")); const version = pj.version; const description = pj.description; const logger = new Logger_js_1.default(); commander_1.default .version(version) .usage('[options] <componentName>') .option('-u, --onlyUnrealised', 'Брать компонеты только при наличии в unrealised из changelog записей', false) .option('--verbose', 'Вывод подробной информации', false) .description(description) .action(() => __awaiter(this, void 0, void 0, function* () { if (!fs_1.default.existsSync('./package.json')) { return logger.error('Missing package.json'); } init(); // Получение конфигурации const userPackageJson = require(path_1.default.resolve('./package.json')); if (!userPackageJson.cvu) { return logger.error('Missing cvu key in package.json'); } const settings = userPackageJson.cvu; settings.verbose = commander_1.default.verbose || settings.verbose || false; settings.onlyUnrealised = commander_1.default.onlyUnrealised || settings.onlyUnrealised || false; logger.verbose = settings.verbose || false; const changelogFileName = settings.changelogFileName || 'CHANGELOG.md'; if (!settings.pathsToComponents || !settings.pathsToComponents.length) { return logger.error("pathsToComponents c'not empty"); } logMods(settings, logger); const paths = settings.pathsToComponents; // Создание вопросника const questionModule = new QuestionModule_js_1.default(paths, logger); const changelogModule = new ChangelogModule_js_1.default({ changelogFileName, pathToGlobalChangelog: settings.pathToGlobalChangelog, globalChangelogFormat: settings.globalChangelogFormat, }, logger); for (const component of questionModule.components) { if (changelogModule.isset(component.path)) { changelogModule.read(component.path); } else { logger.warn(`Not found ${path_1.default.resolve(component.path + '/' + changelogFileName)} by ${component.data.name}`); } } if (settings.onlyUnrealised) { questionModule.components = questionModule.components.filter(component => changelogModule.isUnrealized(component.path)); } if (!questionModule.components.length) { return logger.error('No components by publish'); } // Опрос пользователя const answer = yield questionModule.ask(); const pathComponent = answer.component.path; if (!changelogModule.isUnrealized(pathComponent)) { return logger.error(`Nothing unrealized changes in ${pathComponent}/${changelogModule.changelogFileName}`); } // Обновление версии в package.json shelljs_1.default.exec(`npm version ${answer.version} --prefix ${pathComponent}`); // Обновление версии в component/Changelog.md if (changelogModule.upVersion(pathComponent, answer.version)) { answer.component.data.version = answer.version; changelogModule.writeGlobalChangelog(pathComponent, answer.component); if (settings.commitMessage) { const message = settings.commitMessage .replace(/%name%/g, answer.component.data.name) .replace(/%version%/g, answer.component.data.version); shelljs_1.default.exec(`git add ${pathComponent} ${settings.pathToGlobalChangelog} && git commit -m "${message}"`); logger.info(`Commited "${message}"`); } } // Обновление Общего changelog.md logger.log(changelogModule.get(pathComponent).unrealised.join(', ')); })) .parse(process.argv); function logMods(settings, logger) { logger.info(chalk_1.default.bold.yellow('Run with mode verbose')); if (settings.onlyUnrealised) { logger.info(chalk_1.default.bold.yellow('Run with mode onlyUnrealised')); } console.log(); } function init() { console.log(chalk_1.default.bold.blue('component-version-updater', '- v' + version)); console.log(chalk_1.default.cyan(figlet.textSync('Updater', { font: 'Stop', horizontalLayout: 'fitted', verticalLayout: 'default', }))); console.log(); } //# sourceMappingURL=component-version-update.js.map