cloudcmd/bin/release.mjs
2020-12-28 17:37:29 +02:00

70 lines
1.8 KiB
JavaScript
Executable file

#!/usr/bin/env node
import Info from '../package.js';
import minor from 'minor';
import place from 'place';
import rendy from 'rendy';
import shortdate from 'shortdate';
const ERROR = Error('ERROR: version is missing. release --patch|--minor|--major');
main((error) => {
if (error)
console.error(error.message);
});
function main(callback) {
const history = 'Version history\n---------------\n';
const link = '//github.com/coderaiser/cloudcmd/releases/tag/';
const template = '- *{{ date }}*, ' +
'**[v{{ version }}]' +
'(' + link + 'v{{ version }})**\n';
const {version} = Info;
cl((error, versionNew) => {
if (error)
return callback(error);
replaceVersion('README.md', version, versionNew, callback);
replaceVersion('HELP.md', version, versionNew, () => {
const historyNew = history + rendy(template, {
date : shortdate(),
version : versionNew,
});
replaceVersion('HELP.md', history, historyNew, callback);
});
});
}
function replaceVersion(name, version, versionNew, callback) {
place(name, version, versionNew, (error) => {
if (error)
return callback(error);
callback(null, 'done: ' + name);
});
}
function cl(callback) {
const {argv} = process;
const length = argv.length - 1;
const last = process.argv[length];
const regExp = /^--(major|minor|patch)$/;
const [, match] = last.match(regExp) || [];
if (!regExp.test(last))
return callback(ERROR);
callback(null, getVersionNew(last, match));
}
function getVersionNew(last, match) {
if (match)
return minor(match, Info.version);
return last.substr(3);
}