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
JavaScript
;
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" }),
};