git-release-manager
Version:
A tool to generate release notes from git commit history
137 lines • 7.89 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createFlowCommand = createFlowCommand;
const commander_1 = require("commander");
const FlowManager_1 = require("../../modules/FlowManager");
function createFlowCommand(program) {
const flowProgram = program
.command("flow")
.alias('f')
.description("Tools to manage your git releases and versioning");
const programPhase = flowProgram.command('phase').description('');
programPhase.addCommand(new commander_1.Command()
.command('dev')
.alias('d')
.description('Determine version')
.addOption(new commander_1.Option('-p, --print <type>', 'Print option can be full, base, channel, or left empty').choices(['full', 'base', 'channel', 'build']).default(''))
.addOption(new commander_1.Option('-n, --next', 'Next version'))
.addOption(new commander_1.Option('-c, --current', 'Current version').default(false))
.action(async (commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
const determinedVersion = await flowManager.DetermineDevPhaseVersion('dev', options);
if (determinedVersion) {
console.log(determinedVersion.replace('\n', ''));
}
}));
programPhase.addCommand(new commander_1.Command()
.command('qa')
.alias('t')
.description('Determine version')
.addArgument(new commander_1.Argument('<channel>', 'Specify the channel'))
.addArgument(new commander_1.Argument('[version]', 'Specify the version'))
.addOption(new commander_1.Option('-n, --next', 'Next version'))
.addOption(new commander_1.Option('--next-release', 'Next release version'))
.addOption(new commander_1.Option('-c, --current', 'Current version').default(false))
.addOption(new commander_1.Option('-p, --print <type>', 'Print option can be full, base, channel, or left empty').choices(['full', 'base', 'channel', 'build']).default(''))
.action(async (channel, version, commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
const determinedVersion = await flowManager.DetermineQAPhaseVersion(channel, version, options);
if (determinedVersion) {
console.log(determinedVersion.replace('\n', ''));
}
}));
programPhase.addCommand(new commander_1.Command()
.command('stage')
.alias('s')
.description('Determine version')
.addArgument(new commander_1.Argument('<channel>', 'Specify the channel'))
.addArgument(new commander_1.Argument('[version]', 'Specify the version'))
.addOption(new commander_1.Option('-n, --next', 'Next version'))
.addOption(new commander_1.Option('--next-release', 'Next release version'))
.addOption(new commander_1.Option('-c, --current', 'Current version').default(false))
.addOption(new commander_1.Option('-p, --print <type>', 'Print option can be full, base, channel, or left empty').choices(['full', 'base', 'channel', 'build']).default(''))
.action(async (channel, version, commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
const determinedVersion = await flowManager.DetermineStagePhaseVersion(channel, version, options);
if (determinedVersion) {
console.log(determinedVersion.replace('\n', ''));
}
}));
programPhase.addCommand(new commander_1.Command()
.command('prod')
.alias('p')
.description('Determine version')
.addArgument(new commander_1.Argument('[version]', 'Specify the version'))
.addOption(new commander_1.Option('-n, --next', 'Next version'))
.addOption(new commander_1.Option('--next-release', 'Next release version'))
.addOption(new commander_1.Option('--next-fix', 'Next fix release version'))
.addOption(new commander_1.Option('-c, --current', 'Current version').default(false))
.addOption(new commander_1.Option('--previous', 'Previous version'))
.addOption(new commander_1.Option('--previous-fix', 'Previous fix release version'))
.addOption(new commander_1.Option('-p, --print <type>', 'Print option can be full, base, channel, or left empty').choices(['full', 'base', 'channel']).default(''))
.action(async (version, commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
const determinedVersion = await flowManager.DetermineProductionPhaseVersion("beta", version, options);
if (determinedVersion) {
console.log(determinedVersion.replace('\n', ''));
}
}));
const programTag = flowProgram.command('tag').description('');
programTag.addCommand(new commander_1.Command()
.command('list')
.alias('l')
.description('List release branches')
.addArgument(new commander_1.Argument('branch'))
.action(async (branch, commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
const existingTags = await flowManager.listBranchTags(branch);
console.log(existingTags);
}));
programTag.addCommand(new commander_1.Command()
.command('latest')
.description('Get latest branch tag')
.addArgument(new commander_1.Argument('<branch>', 'Specify the branch'))
.addOption(new commander_1.Option('-p, --print <type>', 'Print option can be full, base, channel, or left empty').choices(['full', 'base', 'channel', 'build']).default(''))
.action(async (branch, commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
const latestBranchTag = await flowManager.latestTagVersion(branch);
const latestBranchVersion = flowManager.getVersionPart(latestBranchTag, options);
console.log(latestBranchVersion);
}));
const programRelease = flowProgram.command('release').description('');
programRelease.addCommand(new commander_1.Command()
.command('list')
.alias('l')
.description('List release branches')
.addArgument(new commander_1.Argument('channel'))
.action(async (channel, commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
const existingReleaseBranches = await flowManager.listReleaseBranches(channel);
console.log(existingReleaseBranches);
}));
programRelease.addCommand(new commander_1.Command()
.command('latest')
.description('Get latest release branch')
.addArgument(new commander_1.Argument('<channel>', 'Specify the channel'))
.addOption(new commander_1.Option('-p, --print <type>', 'Print option can be full, base, channel, or left empty').choices(['full', 'base', 'channel', 'build']).default(''))
.action(async (channel, commandOptions) => {
const options = { ...program.opts(), ...commandOptions };
const flowManager = new FlowManager_1.FlowManager();
let latestBranch = await flowManager.latestReleaseBranchVersion(channel);
latestBranch = flowManager.getVersionPart(latestBranch, options);
console.log(latestBranch);
}));
program.action(() => {
console.log('Please specify a command or use --help for usage information');
process.exit(1);
});
return flowProgram;
}
//# sourceMappingURL=command.js.map