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