component-version-update
Version:
Обновляет версию пакета в файлах package.json, CHANGELOG.md с формированием коммита с изменениями
74 lines • 3.27 kB
JavaScript
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
;