67 lines
2.6 KiB
JavaScript
Executable File
67 lines
2.6 KiB
JavaScript
Executable File
const {argv, env, stderr} = require('process');
|
|
const util = require('util');
|
|
const hideSensitive = require('./lib/hide-sensitive');
|
|
|
|
const stringList = {
|
|
type: 'string',
|
|
array: true,
|
|
coerce: values =>
|
|
values.length === 1 && values[0].trim() === 'false'
|
|
? []
|
|
: values.reduce((values, value) => values.concat(value.split(',').map(value => value.trim())), []),
|
|
};
|
|
|
|
module.exports = async () => {
|
|
const cli = require('yargs')
|
|
.command('$0', 'Run automated package publishing', yargs => {
|
|
yargs.demandCommand(0, 0).usage(`Run automated package publishing
|
|
|
|
Usage:
|
|
semantic-release [options] [plugins]`);
|
|
})
|
|
.option('b', {alias: 'branch', describe: 'Git branch to release from', type: 'string', group: 'Options'})
|
|
.option('r', {alias: 'repository-url', describe: 'Git repository URL', type: 'string', group: 'Options'})
|
|
.option('t', {alias: 'tag-format', describe: 'Git tag format', type: 'string', group: 'Options'})
|
|
.option('e', {alias: 'extends', describe: 'Shareable configurations', ...stringList, group: 'Options'})
|
|
.option('ci', {describe: 'Toggle CI verifications', type: 'boolean', group: 'Options'})
|
|
.option('verify-conditions', {...stringList, group: 'Plugins'})
|
|
.option('analyze-commits', {type: 'string', group: 'Plugins'})
|
|
.option('verify-release', {...stringList, group: 'Plugins'})
|
|
.option('generate-notes', {type: 'string', group: 'Plugins'})
|
|
.option('prepare', {...stringList, group: 'Plugins'})
|
|
.option('publish', {...stringList, group: 'Plugins'})
|
|
.option('success', {...stringList, group: 'Plugins'})
|
|
.option('fail', {...stringList, group: 'Plugins'})
|
|
.option('debug', {describe: 'Output debugging information', type: 'boolean', group: 'Options'})
|
|
.option('d', {alias: 'dry-run', describe: 'Skip publishing', type: 'boolean', group: 'Options'})
|
|
.option('h', {alias: 'help', group: 'Options'})
|
|
.option('v', {alias: 'version', group: 'Options'})
|
|
.strict(false)
|
|
.exitProcess(false);
|
|
|
|
try {
|
|
const {help, version, ...opts} = cli.parse(argv.slice(2));
|
|
|
|
if (Boolean(help) || Boolean(version)) {
|
|
return 0;
|
|
}
|
|
|
|
// Set the `noCi` options as yargs sets the `ci` options instead (because arg starts with `--no`)
|
|
if (opts.ci === false) {
|
|
opts.noCi = true;
|
|
}
|
|
|
|
if (opts.debug) {
|
|
// Debug must be enabled before other requires in order to work
|
|
require('debug').enable('semantic-release:*');
|
|
}
|
|
await require('.')(opts);
|
|
return 0;
|
|
} catch (err) {
|
|
if (err.name !== 'YError') {
|
|
stderr.write(hideSensitive(env)(util.inspect(err, {colors: true})));
|
|
}
|
|
return 1;
|
|
}
|
|
};
|