"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = __importDefault(require("fs")); const path_1 = __importDefault(require("path")); const read_pkg_1 = __importDefault(require("read-pkg")); const hookList = { applypatchmsg: 'applypatch-msg', commitmsg: 'commit-msg', postapplypatch: 'post-applypatch', postcheckout: 'post-checkout', postcommit: 'post-commit', postmerge: 'post-merge', postreceive: 'post-receive', postrewrite: 'post-rewrite', postupdate: 'post-update', preapplypatch: 'pre-applypatch', preautogc: 'pre-auto-gc', precommit: 'pre-commit', preparecommitmsg: 'prepare-commit-msg', prepush: 'pre-push', prerebase: 'pre-rebase', prereceive: 'pre-receive', pushtocheckout: 'push-to-checkout', sendemailvalidate: 'sendemail-validate', update: 'update' }; function upgrade(cwd) { const pkgFile = path_1.default.join(cwd, 'package.json'); if (fs_1.default.existsSync(pkgFile)) { const pkg = read_pkg_1.default.sync({ cwd, normalize: false }); console.log(`husky > upgrading ${pkgFile}`); // Don't overwrite 'husky' field if it exists if (pkg.husky) { return console.log(`husky field in package.json isn't empty, skipping automatic upgrade`); } const hooks = {}; // Find hooks in package.json 'scripts' field Object.keys(hookList).forEach((name) => { if (pkg.scripts) { const script = pkg.scripts[name]; if (script) { delete pkg.scripts[name]; const newName = hookList[name]; hooks[newName] = script.replace(/\bGIT_PARAMS\b/g, 'HUSKY_GIT_PARAMS'); console.log(`moved scripts.${name} to husky.hooks.${newName}`); } } }); // Move found hooks to 'husky.hooks' field if (Object.keys(hooks).length) { pkg.husky = { hooks }; } else { console.log('no hooks found'); } // Update package.json fs_1.default.writeFileSync(pkgFile, `${JSON.stringify(pkg, null, 2)}\n`, 'utf-8'); console.log(`husky > done`); } } exports.default = upgrade;