mirror of
https://github.com/actions/setup-node.git
synced 2024-11-10 13:41:08 +07:00
29 lines
691 B
JavaScript
29 lines
691 B
JavaScript
|
module.exports = register
|
||
|
|
||
|
function register (state, name, method, options) {
|
||
|
if (typeof method !== 'function') {
|
||
|
throw new Error('method for before hook must be a function')
|
||
|
}
|
||
|
|
||
|
if (!options) {
|
||
|
options = {}
|
||
|
}
|
||
|
|
||
|
if (Array.isArray(name)) {
|
||
|
return name.reverse().reduce(function (callback, name) {
|
||
|
return register.bind(null, state, name, callback, options)
|
||
|
}, method)()
|
||
|
}
|
||
|
|
||
|
return Promise.resolve()
|
||
|
.then(function () {
|
||
|
if (!state.registry[name]) {
|
||
|
return method(options)
|
||
|
}
|
||
|
|
||
|
return (state.registry[name]).reduce(function (method, registered) {
|
||
|
return registered.hook.bind(null, method, options)
|
||
|
}, method)()
|
||
|
})
|
||
|
}
|