UNPKG

ember-cli

Version:

Command line tool for developing ambitious ember.js apps

67 lines (60 loc) 1.96 kB
var fs = require('fs') var program = require('commander') var copyDereferenceSync = require('copy-dereference').sync var broccoli = require('./index') module.exports = broccoliCLI function broccoliCLI () { var actionPerformed = false program .version(JSON.parse(fs.readFileSync(__dirname + '/../package.json', 'utf8')).version) .usage('[options] <command> [<args ...>]') program.command('serve') .description('start a broccoli server') .option('--port <port>', 'the port to bind to [4200]', 4200) .option('--host <host>', 'the host to bind to [localhost]', 'localhost') .option('--live-reload-port <port>', 'the port to start LiveReload on [35729]', 35729) .action(function(options) { actionPerformed = true broccoli.server.serve(getBuilder(), options) }) program.command('build <target>') .description('output files to target directory') .action(function(outputDir) { actionPerformed = true var builder = getBuilder() builder.build() .then(function (hash) { var dir = hash.directory try { copyDereferenceSync(dir, outputDir) } catch (err) { if (err.code === 'EEXIST') err.message += ' (we cannot build into an existing directory)' throw err } }) .finally(function () { builder.cleanup() }) .then(function () { process.exit(0) }) .catch(function (err) { // Should show file and line/col if present if (err.file) { console.error('File: ' + err.file) } console.error(err.stack) console.error('\nBuild failed') process.exit(1) }) }) program.parse(process.argv) if(!actionPerformed) { program.outputHelp() process.exit(1) } } function getBuilder () { var tree = broccoli.loadBrocfile() return new broccoli.Builder(tree) }