gasket
Version:
Preconfigured pipelines for node.js
56 lines (46 loc) • 1.39 kB
JavaScript
var minimist = require('minimist')
var gasket = require('./')
var argv = minimist(process.argv, {
alias: {c:'config', v:'version', l:'list'},
default: {config:process.cwd()},
boolean: ['list', 'version']
})
var names = argv._.slice(2)
if (names.indexOf('main') === -1) names.unshift('main')
if (argv.version) {
console.log(require('./package').version)
process.exit(0)
}
var help = function() {
console.error('Usage: gasket [options] [task1] [task2] ...')
console.error()
console.error(' --config, -c To explicitly set the gasket config file/dir')
console.error(' --version, -v Print the installed version')
console.error(' --list, -l List available gasket tasks')
console.error()
}
if (argv.help) {
help()
process.exit()
}
var onerror = function(err) {
if (err.code === 'ENOENT') {
console.error('Could not find gasket config (gasket.json or package.json)')
process.exit(2)
} else {
console.error(err.message)
process.exit(3)
}
}
gasket.load(argv.config, function(err, tasks) {
if (err) return onerror(err)
if (argv.list) return Object.keys(tasks).length && console.log(Object.keys(tasks).join('\n'))
var loop = function() {
var name = names.shift()
if (!name) return process.exit()
if (!tasks[name]) return loop()
tasks[name]().on('end', loop).pipe(process.stdout)
}
loop()
})