UNPKG

git-graft

Version:

NPX CLI tool that generates a configurable Git Hook that prepends branch name patterns to commit messages.

52 lines (51 loc) 2.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const command_1 = require("@oclif/command"); const enquirer_1 = require("enquirer"); const chalk = require("chalk"); const path = require("path"); const fsp = require("fs/promises"); const accessCheck_1 = require("../accessCheck"); const generateConfig_1 = require("../generateConfig"); class Init extends command_1.Command { async run() { const zeroConfig = await enquirer_1.prompt({ type: "confirm", name: "result", message: `${chalk.bold.white("Would you like to utilize Zero Config")} \n This will make assumptions about your Gitflow DevOps i.e. feature/Ticket-####-description`, }); let outConfig; if (!zeroConfig.result) { outConfig = await generateConfig_1.generateConfig(); } const inDir = path.resolve(__dirname, "../templates/git-graft-template"); const outDir = path.join(process.cwd(), "./.git/hooks/commit-msg"); await fsp.copyFile(inDir, outDir); const currPermission = await accessCheck_1.accessCheck(outDir); this.log("Git Graft Hook Permissions: ", chalk.bold.yellowBright(currPermission)); if (currPermission === "Access Denied") { enquirer_1.prompt({ type: "confirm", name: "permit", message: `${chalk.bold.white("Git Graft needs execution permissions.")} \n Would you like to proceed?`, }).then(async (answer) => { if (answer.permit) { fsp.chmod(outDir, "774"); this.log("Git Graft Updated Permissions: ", chalk.bold.green(await accessCheck_1.accessCheck(outDir))); } else { await fsp.rm(outDir); outConfig && (await fsp.rm(outConfig)); this.log(chalk.bold.redBright("Git Graft Hook Generation Aborted. Generated Files Removed.")); process.exit(0); } }); } } } exports.default = Init; Init.description = `"init" will prompt for configuration inputs, then generate git-graft.json and the Git Hook file.`; Init.flags = { version: command_1.flags.version({ char: "v" }), help: command_1.flags.help({ char: "h" }), };