UNPKG

1.18 kBJavaScriptView Raw
1'use strict'
2
3const debug = require('debug')('elint:hooks')
4const path = require('path')
5const exec = require('./lib/exec')
6const log = require('./utils/log')
7const pragram = require.resolve('husky/lib/installer/bin')
8const huskyDir = path.join(pragram, '../../..')
9
10// 支持的 actions
11const supportActions = [
12 'install',
13 'uninstall'
14]
15
16/**
17 * install & uninstall git hooks
18 *
19 * @param {string} action 要执行的 action
20 * @returns {void}
21 */
22function runHooks (action) {
23 debug(`input action: ${action}`)
24 debug(`husky pragram path: ${pragram}`)
25 debug(`husky dir: ${huskyDir}`)
26
27 if (!action) {
28 log.error('请输入 action, 例如:elint hooks install')
29 process.exit(1)
30 }
31
32 if (!supportActions.includes(action)) {
33 log.error(`不支持的 action: ${action}`)
34 process.exit(1)
35 }
36
37 // huskyDir 必须指定
38 exec('node')(pragram, action, huskyDir)
39 .then(({ stdout }) => {
40 const logFn = stdout.includes('done') ? log.success : log.info
41 const message = stdout.replace(/husky > /g, '').split('\n')
42
43 logFn(...message)
44 })
45 .catch(error => {
46 log.error(error.message || 'error')
47 })
48}
49
50module.exports = runHooks