UNPKG

git-release-manager

Version:

A tool to generate release notes from git commit history

150 lines 7.17 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createBranchCommand = createBranchCommand; const commander_1 = require("commander"); const BranchController_1 = require("../modules/branch/BranchController"); const branchTypes = [ { name: "release", prefix: "release/" }, { name: "hotfix", prefix: "hotfix/" }, { name: "feature", prefix: "feature/" }, { name: "custom", prefix: "custom/" }, ]; function createBranchCommand(program) { const createBranchSubcommand = (type, prefix) => { return new commander_1.Command(type) .description(`Create and manage ${type} branches`) .argument("<name>", `Name of the ${type} branch`) .action(async (commandOptions) => { const options = { ...program.opts(), ...commandOptions }; if (options[type]) { options.branchName = `${prefix}${options[type]}`; console.log(`Creating ${type} branch: ${options.branchName}`); const controller = new BranchController_1.BranchController(); await controller.handleCreateCommand(options); } }); }; const programBranch = program .command("branch") .alias("b") .description("Manage different types of git branches"); programBranch.addCommand(new commander_1.Command() .command("create") .alias("c") .description("Create a new branch") .addArgument(new commander_1.Argument("<name>", "branch to create")) .addOption(new commander_1.Option('--push', 'Push branch to remote')) .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; options.name = args; const controller = new BranchController_1.BranchController(); await controller.handleCreateCommand(options); })); programBranch.addCommand(new commander_1.Command() .command("delete") .alias("d") .description("Delete a given branch") .argument("<name>", "Name of the branch to delete") .addOption(new commander_1.Option('--push', 'Push branch to remote')) .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; options.name = args; const controller = new BranchController_1.BranchController(); await controller.handleDeleteCommand(options); })); programBranch.addCommand(new commander_1.Command() .command("merge") .alias("m") .description("Merge a branch into the current branch") .argument("<name>", "Name of the branch to be merged") .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; options.name = args; const controller = new BranchController_1.BranchController(); await controller.handleMergeCommand(options); })); programBranch.addCommand(new commander_1.Command() .command("switch") .alias("s") .description("Switch to branch") .addArgument(new commander_1.Argument("<name>", "branch to switch")) .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; options.name = args; const controller = new BranchController_1.BranchController(); await controller.handleSwitchCommand(options); })); programBranch.addCommand(new commander_1.Command() .command("protect") .alias("p") .description("Protect a branch from direct commits") .argument("<name>", "Name of the branch to protect") .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; options.name = args; const controller = new BranchController_1.BranchController(); await controller.handleProtectCommand(options); })); programBranch.addCommand(new commander_1.Command() .command("unprotect") .description("Remove protection from a branch") .argument("<name>", "Name of the branch to unprotect") .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; options.name = args; const controller = new BranchController_1.BranchController(); await controller.handleUnProtectCommand(options); })); programBranch.addCommand(new commander_1.Command() .command("rebase") .alias("r") .description("Rebase the current branch onto another specified branch") .argument("<branchName>", "Name of the branch to rebase onto") .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; options.name = args; const controller = new BranchController_1.BranchController(); await controller.handleRebaseCommand(options); })); // programBranch .addCommand( // new Command() // .command("remote") // .description("Synchronize version with remote tags and update remote") // // .option('--sync', 'Sync versions with remote') // // .option('--push', 'Push changes and tags to remote') // // .option('--draft', 'Create draft release') // .action(async (commandOptions: VersionRemoteCliArgs) => { // console.log(`Comparing version: ${commandOptions.draft}`); // }) // ) // // .option('--release <version>', 'Create a release branch (release/{version})') // // .option('--hotfix <version>', 'Create a hotfix branch (hotfix/{version})') // // .option('--feature <name>', 'Create a feature branch (feature/{name})') // // .option('--finish [branchName]', 'Finish a feature/release/hotfix branch') // .action(async (commandOptions: BranchCliArgs) => { // const options = { ...program.opts(), ...commandOptions }; // branchRun(options); // }); programBranch.addCommand(new commander_1.Command() .command("list") .alias("l") .description("List all branches with filtering options") .option("-l, --latest", "Display the latest branch only") .option("-c, --count [count]", "List versions up to a count") // .option('-r, --reverse', 'List versions in reverse order') // .option('-t, --tag', 'List versions with tags') // .option('-d, --date', 'List versions with dates') // .option('-s, --sort', 'Sort versions') // .option('-v, --verbose', 'Show detailed version information') // .option('-a, --all', 'Show all versions') .action(async (args, commandOptions) => { const options = { ...program.opts(), ...commandOptions }; const controller = new BranchController_1.BranchController(); await controller.handleListCommand(options); })); branchTypes.forEach((type) => { programBranch.addCommand(createBranchSubcommand(type.name, type.prefix)); }); return programBranch; } //# sourceMappingURL=branchCommand.js.map