angular/devtools/projects/shell-chrome/set-version.js

51 lines
1.4 KiB
JavaScript

const chalk = require('chalk');
const { createInterface } = require('readline');
const semver = require('semver');
const { writeFileSync, readFileSync } = require('fs');
const { join } = require('path');
const MANIFEST_PATH = join(__dirname, 'src/manifest.json');
const manifest = JSON.parse(readFileSync(MANIFEST_PATH).toString());
console.log('Current version', chalk.yellow(manifest.version));
console.log('Current version name', chalk.yellow(manifest.version_name));
const setVersion = (nextVersion) => {
manifest.version = nextVersion;
manifest.version_name = nextVersion;
writeFileSync(MANIFEST_PATH, JSON.stringify(manifest, null, 2));
};
const answerMap = {
yes: true,
y: true,
no: false,
n: false,
};
const rl = createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question(chalk.yellowBright('Set the current version: '), (nextVersion) => {
if (!semver.valid(nextVersion)) {
console.error(chalk.red('Invalid version'));
}
if (semver.gt(nextVersion, manifest.version)) {
rl.close();
setVersion(nextVersion);
return;
}
console.error(chalk.yellow('Next version cannot be smaller or equal to the previous one'));
rl.question('Are you sure you want to continue? (y/n) ', (answer) => {
rl.close();
answer = answer.toLowerCase();
if (!answerMap[answer]) {
throw new Error('Exiting');
}
setVersion(nextVersion);
});
});