Skip to content

Commit 3ae83e7

Browse files
committed
feat(hooks): use function to define hook
resolve #57
1 parent 18ff879 commit 3ae83e7

File tree

1 file changed

+23
-5
lines changed

1 file changed

+23
-5
lines changed

src/load-config/load-template-config/format-hooks.js

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,8 @@ const { exec } = require('child_process');
22
const log = require('../../utils/log')
33

44

5-
module.exports = hooks => name => new Promise((resolve, reject) => {
6-
if (typeof hooks[name] !== 'string') return resolve()
7-
log.info(`run ${name} hook...`)
8-
9-
exec(hooks[name], (error, stdout, stderr) => {
5+
const execCommand = command => new Promise(resolve => {
6+
exec(command, (error, stdout, stderr) => {
107
if (error) {
118
log.error('hook exec error', error);
129
return resolve()
@@ -18,3 +15,24 @@ module.exports = hooks => name => new Promise((resolve, reject) => {
1815
resolve()
1916
});
2017
})
18+
19+
const execFunction = async func => {
20+
try {
21+
await func()
22+
} catch (error) {
23+
log.error('hook exec error', error)
24+
}
25+
}
26+
27+
module.exports = hooks => async name => {
28+
switch(typeof hooks[name]) {
29+
case 'string':
30+
log.info(`run ${name} hook...`)
31+
await execCommand(hooks[name])
32+
break
33+
case 'function':
34+
log.info(`run ${name} hook...`)
35+
await execFunction(hooks[name])
36+
break
37+
}
38+
}

0 commit comments

Comments
 (0)