1 | 'use strict'
|
2 |
|
3 | const debug = require('debug')('elint:hooks')
|
4 | const path = require('path')
|
5 | const exec = require('./lib/exec')
|
6 | const log = require('./utils/log')
|
7 | const pragram = require.resolve('husky/lib/installer/bin')
|
8 | const huskyDir = path.join(pragram, '../../..')
|
9 |
|
10 |
|
11 | const supportActions = [
|
12 | 'install',
|
13 | 'uninstall'
|
14 | ]
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 | function 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 |
|
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 |
|
50 | module.exports = runHooks
|