index.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const fs_1 = __importDefault(require("fs"));
  7. const path_1 = __importDefault(require("path"));
  8. const debug_1 = require("../debug");
  9. const getConf_1 = require("../getConf");
  10. const hooks_1 = require("./hooks");
  11. const localScript_1 = require("./localScript");
  12. const mainScript_1 = require("./mainScript");
  13. // This prevents the case where someone would want to debug a node_module that has
  14. // husky as devDependency and run npm install from node_modules directory
  15. function isInNodeModules(dir) {
  16. return dir.indexOf('node_modules') !== -1;
  17. }
  18. function getGitHooksDir(gitDir) {
  19. return path_1.default.join(gitDir, 'hooks');
  20. }
  21. function install({ absoluteGitCommonDir, relativeUserPkgDir, userPkgDir, pmName, // package manager name
  22. isCI, }) {
  23. // Get conf from package.json or .huskyrc
  24. const conf = getConf_1.getConf(userPkgDir);
  25. // Checks
  26. if (isCI && conf.skipCI) {
  27. console.log('CI detected, skipping Git hooks installation.');
  28. return;
  29. }
  30. if (isInNodeModules(userPkgDir)) {
  31. console.log('Trying to install from node_modules directory, skipping Git hooks installation.');
  32. return;
  33. }
  34. // Create hooks directory if it doesn't exist
  35. const gitHooksDir = getGitHooksDir(absoluteGitCommonDir);
  36. if (!fs_1.default.existsSync(gitHooksDir)) {
  37. fs_1.default.mkdirSync(gitHooksDir);
  38. }
  39. debug_1.debug(`Installing hooks in ${gitHooksDir}`);
  40. hooks_1.createHooks(gitHooksDir);
  41. localScript_1.createLocalScript(gitHooksDir, pmName, relativeUserPkgDir);
  42. mainScript_1.createMainScript(gitHooksDir);
  43. }
  44. exports.install = install;
  45. function uninstall({ absoluteGitCommonDir, userPkgDir, }) {
  46. if (isInNodeModules(userPkgDir)) {
  47. console.log('Trying to uninstall from node_modules directory, skipping Git hooks uninstallation.');
  48. return;
  49. }
  50. // Remove hooks
  51. const gitHooksDir = getGitHooksDir(absoluteGitCommonDir);
  52. hooks_1.removeHooks(gitHooksDir);
  53. localScript_1.removeLocalScript(gitHooksDir);
  54. mainScript_1.removeMainScript(gitHooksDir);
  55. }
  56. exports.uninstall = uninstall;