bin/synth
#!/usr/bin/env node
process.title = 'synth';
/* Third-party Modules */
var mkdirp = require('mkdirp'),
pkg = require('../package.json'),
version = pkg.version,
os = require('os'),
fs = require('fs'),
path = require('path'),
_ = require('lodash'),
npm = require('npm'),
bower = require('bower');
/* Local modules */
var commands = require('../lib/commands.js');
/* Global vars */
var validCommands = {
'new': 'n',
'install': 'i',
'list': 'l',
'search': 'se',
'uninstall': 'u',
'server': 's',
'prod': 'p',
'routes': 'r',
'help': 'h'
};
// List of arguments passed in
var args = process.argv.slice(2);
// Determine which command is being executed
var command = (function () {
// Substitute shortcut commands for the full version
var supposedCommand = _.invert(validCommands)[ args[0] ] || args[0];
// Replace unknown commands with 'help'
if ( !_(validCommands).has(supposedCommand) ) {
if (supposedCommand) console.log('Unrecognized command: ' + supposedCommand + '\n');
return "help";
}
return supposedCommand;
})();
if (command === 'new' && args[1] && args[1][0] != '-') {
commands.createNewApp(args[1]);
return;
}
if ( _(['server', 'prod']).contains(command) ) {
var mode = 'development';
var port;
if (command == 'prod' || process.env.NODE_ENV == 'production') {
process.env.NODE_ENV = mode = 'production';
}
portFlagIndex = args.indexOf('-p');
if (portFlagIndex == -1) portFlagIndex = args.indexOf('--port');
if ( portFlagIndex != -1) port = parseInt(args[portFlagIndex+1], 10);
port = port || process.env.PORT || 3000;
commands.startServer(mode, port);
return;
}
if ( _(['install', 'search', 'list']).contains(command) ) {
commands.install(command, args.slice(1) );
return;
} else if ( _(['uninstall']).contains(command) ) {
commands.uninstall(command, args.slice(1) );
return;
}
if (command === 'routes') {
commands.printRoutes();
return;
}
commands.showHelp(args[1]);