'use strict';
var __createBinding =
  (this && this.__createBinding) ||
  (Object.create
    ? function (o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        var desc = Object.getOwnPropertyDescriptor(m, k);
        if (!desc || ('get' in desc ? !m.__esModule : desc.writable || desc.configurable)) {
          desc = {
            enumerable: true,
            get: function () {
              return m[k];
            },
          };
        }
        Object.defineProperty(o, k2, desc);
      }
    : function (o, m, k, k2) {
        if (k2 === undefined) k2 = k;
        o[k2] = m[k];
      });
var __setModuleDefault =
  (this && this.__setModuleDefault) ||
  (Object.create
    ? function (o, v) {
        Object.defineProperty(o, 'default', { enumerable: true, value: v });
      }
    : function (o, v) {
        o['default'] = v;
      });
var __importStar =
  (this && this.__importStar) ||
  function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null)
      for (var k in mod)
        if (k !== 'default' && Object.prototype.hasOwnProperty.call(mod, k))
          __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
  };
Object.defineProperty(exports, '__esModule', { value: true });
exports.GitCommitMsgHook = void 0;
const fs = __importStar(require('fs'));
const commander_1 = require('commander');
const shell = __importStar(require('shelljs'));
class GitCommitMsgHook {
  constructor() {}
  setup() {
    this.setupInstallHookCommand();
    this.setupRemoveHookCommand();
  }
  setupInstallHookCommand() {
    commander_1.program
      .command('commit-msg-hook')
      .description('Setup git commit-msg hook for conventional commits')
      .action(async () => {
        if (!fs.existsSync('.git')) {
          commander_1.program.error(
            "`.git` folder doesn't exist. You should be in the root of a git project",
          );
          return;
        }
        this.runInstallHookCommand();
      });
  }
  setupRemoveHookCommand() {
    commander_1.program
      .command('remove-commit-msg-hook')
      .description('Remove git commit-msg hook')
      .action(async () => {
        if (!fs.existsSync('.git')) {
          commander_1.program.error(
            "`.git` folder doesn't exist. You should be in the root of a git project",
          );
          return;
        }
        this.runRemoveHookCommand();
      });
  }
  runInstallHookCommand() {
    shell.exec(
      'curl -o- https://raw.githubusercontent.com/tapsellorg/conventional-commits-git-hook/master/scripts/install.sh | sh',
    );
  }
  runRemoveHookCommand() {
    shell.exec('rm .git/hooks/commit-msg');
  }
}
exports.GitCommitMsgHook = GitCommitMsgHook;
//# sourceMappingURL=git-commit-msg-hook.js.map
