UNPKG

component-version-update

Version:

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

74 lines 3.27 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const inquirer_1 = __importDefault(require("inquirer")); const chalk_1 = __importDefault(require("chalk")); inquirer_1.default.registerPrompt('autocomplete', require('inquirer-autocomplete-prompt')); class QuestionModule { constructor(paths, logger) { this.components = paths.reduce((components, componentPath) => { const folders = fs_1.default.readdirSync(componentPath); const componentsInFolder = folders .filter(folder => fs_1.default.existsSync((componentPath === '/' ? '/' : componentPath + '/') + folder + '/package.json')) .map(folder => { const location = (componentPath === '/' ? '/' : componentPath + '/') + folder; const data = JSON.parse(fs_1.default.readFileSync(location + '/package.json', 'utf8')); return { path: location, data, }; }); if (!componentsInFolder.length) { logger.warn(`Not found components in ${path_1.default.resolve(componentPath)}`); return components; } logger.info(`Found ` + chalk_1.default.bold(`${componentsInFolder.length} `) + chalk_1.default.bold(`(${componentPath})`) + ` components in`, path_1.default.resolve(componentPath)); return components.concat(componentsInFolder); }, []); logger.info('Total: ' + chalk_1.default.bold.white(`${this.components.length}`) + ' found components'); } createQuestions() { const choices = this.components.map(c => ({ name: `${c.data.name}@${c.data.version} - ${chalk_1.default.bold.grey(c.data.description)}`, value: c, })); return [ { name: 'component', type: 'autocomplete', message: 'Название компонента?', source: (answersSoFar, input) => { return Promise.resolve(input ? choices.filter(c => c.name.includes(input)) : choices); }, }, { name: 'version', type: 'list', message: 'Новая версия?', choices: (answer) => { const version = answer.component.data.version.split('.'); return version .map((n, i) => { const newVer = Array.from(version); newVer.splice(i, 3 - i, ...[+n + 1, 0, 0].splice(0, 3 - i)); return newVer.join('.'); }) .sort(); }, }, ]; } ask() { const questions = this.createQuestions(); return inquirer_1.default.prompt(questions); } } exports.default = QuestionModule; //# sourceMappingURL=QuestionModule.js.map