spinjs
Version:
<p align="center"><a href="#"><img width="150" src="https://rawgit.com/sysgears/jsapp/master/packages/spinjs/logo.svg"></a></p>
47 lines (42 loc) • 1.33 kB
text/typescript
import * as minilog from 'minilog';
import * as yargs from 'yargs';
import createConfig from './createConfig';
import execute from './executor';
minilog.enable();
const logger = minilog('spin');
try {
const argv = yargs
.command('build', 'compiles package for usage in production')
.command(['watch', 'start'], 'launches package in development mode with hot code reload')
.command('exp', 'launches server for exp and exp tool')
.command('test [mocha-webpack options]', 'runs package tests')
.demandCommand(1, '')
.option('c', {
describe: 'Specify path to config file',
type: 'string'
})
.option('verbose', {
alias: 'v',
default: false,
describe: 'Show generated config',
type: 'boolean'
})
.version(require('../package.json').version) // tslint:disable-line
.argv;
const cmd = argv._[0];
let config;
if (argv.help && cmd !== 'exp') {
yargs.showHelp();
} else {
const cwd = process.cwd();
if (['exp', 'build', 'test', 'watch', 'start'].indexOf(cmd) >= 0) {
config = createConfig(cwd, cmd, argv);
}
if (Object.keys(config.builders).length === 0) {
throw new Error('No spinjs builders found, exiting.');
}
execute(cmd, argv, config.builders, config.spin);
}
} catch (e) {
logger.error(e);
}