actionhero
Version:
actionhero.js is a multi-transport API Server with integrated cluster capabilities and delayed tasks
50 lines (41 loc) • 1.71 kB
JavaScript
// use me to exclude the files from a plugin within this project
const path = require('path')
const optimist = require('optimist')
const argv = optimist
.demand('name')
.describe('name', 'The name of the plugin')
.argv
module.exports = function (api, next) {
const linkRelativeBase = api.projectRoot + path.sep
let pluginRoot
api.config.general.paths.plugin.forEach(function (pluginPath) {
const pluginPathAttempt = path.normalize(pluginPath + path.sep + argv.name)
if (!pluginRoot && api.utils.dirExists(pluginPath + path.sep + argv.name)) {
pluginRoot = pluginPathAttempt
}
})
if (!pluginRoot) {
api.log(['plugin `%s` not found in plugin paths', argv.name], 'warning', api.config.general.paths.plugin)
return next(null, true)
}
const pluginRootRelative = pluginRoot.replace(linkRelativeBase, '')
api.log(['unlinking the plugin found at %s', pluginRootRelative]);
// unlink actionable files
[
['action', 'actions'],
['task', 'tasks'],
['public', 'public'],
['server', 'servers'],
['initializer', 'initializers']
].forEach(function (c) {
const localLinkDirectory = path.normalize(api.config.general.paths[c[0]][0] + path.sep + 'plugins')
const localLinkLocation = path.normalize(localLinkDirectory + path.sep + argv.name + '.link')
if (api.utils.dirExists(localLinkDirectory)) {
api.utils.removeLinkfileSafely(localLinkLocation)
}
})
api.log('Remember that config files have to be deleted manually', 'warning')
api.log('If your plugin was installed via NPM, also be sure to remove it from your package.json or uninstall it with "npm uninstall --save"', 'warning')
next(null, true)
}