embark/lib/cmd.js

152 lines
4.3 KiB
JavaScript
Raw Normal View History

2016-08-18 00:29:41 +00:00
var program = require('commander');
var colors = require('colors');
var shelljs = require('shelljs');
2016-08-18 00:29:41 +00:00
var Cmd = function(Embark) {
this.Embark = Embark;
2016-10-31 02:37:06 +00:00
program.version(Embark.version);
2016-08-18 00:29:41 +00:00
};
Cmd.prototype.process = function(args) {
this.newApp();
this.demo();
this.build();
2016-08-18 00:29:41 +00:00
this.run();
this.blockchain();
2016-08-18 00:29:41 +00:00
this.simulator();
2016-10-02 21:26:57 +00:00
this.test();
2017-01-08 01:37:48 +00:00
this.upload();
2016-08-18 00:29:41 +00:00
this.otherCommands();
//If no arguments are passed display help by default
if (!process.argv.slice(2).length) {
program.help();
}
2016-08-18 00:29:41 +00:00
program.parse(args);
};
Cmd.prototype.newApp = function() {
var self = this;
program
.command('new [name]')
.description('new application')
.action(function(name, options) {
if (name === undefined) {
console.log("please specify your app Name".red);
console.log("e.g embark new MyApp".green);
console.log("e.g embark new --help for more information".green);
process.exit(9);
}
self.Embark.generateTemplate('boilerplate', './', name);
});
};
Cmd.prototype.demo = function() {
var self = this;
program
.command('demo')
.description('create a working dapp with a SimpleStorage contract')
.action(function() {
self.Embark.generateTemplate('demo', './', 'embark_demo');
});
};
Cmd.prototype.build = function() {
var self = this;
program
.command('build [environment]')
.description('deploy and build dapp at dist/ (default: development)')
.action(function(env, options) {
self.Embark.build({env: env || 'development'});
});
};
2016-08-18 00:29:41 +00:00
Cmd.prototype.run = function() {
var self = this;
program
.command('run [environment]')
.option('-p, --port [port]', 'port to run the dev webserver (default: 8000)')
.option('-b, --host [host]', 'host to run the dev webserver (default: localhost)')
2016-10-30 02:00:54 +00:00
.option('--noserver', 'disable the development webserver')
2016-10-30 02:30:41 +00:00
.option('--nodashboard', 'simple mode, disables the dashboard')
2016-10-30 02:35:22 +00:00
.option('--no-color', 'no colors in case it\'s needed for compatbility purposes')
2016-08-18 00:29:41 +00:00
.description('run dapp (default: development)')
.action(function(env, options) {
self.Embark.run({
env: env || 'development',
serverPort: options.port,
2016-10-30 02:00:54 +00:00
serverHost: options.host,
2016-10-30 02:30:41 +00:00
runWebserver: !options.noserver,
useDashboard: !options.nodashboard
});
2016-08-18 00:29:41 +00:00
});
};
Cmd.prototype.blockchain = function() {
var self = this;
program
.command('blockchain [environment]')
.option('-c, --client [client]', 'Use a specific ethereum client or simulator (supported: geth, parity, ethersim, testrpc')
.description('run blockchain server (default: development)')
.action(function(env ,options) {
2016-08-22 03:40:05 +00:00
self.Embark.initConfig(env || 'development', {
embarkConfig: 'embark.json',
interceptLogs: false
2016-08-22 03:40:05 +00:00
});
self.Embark.blockchain(env || 'development', options.client || 'geth');
});
};
2016-08-18 00:29:41 +00:00
Cmd.prototype.simulator = function() {
var self = this;
2016-08-18 00:29:41 +00:00
program
.command('simulator [environment]')
2016-08-18 00:29:41 +00:00
.description('run a fast ethereum rpc simulator')
2016-10-02 22:45:55 +00:00
.option('--testrpc', 'use testrpc as the rpc simulator [default]')
.option('-p, --port [port]', 'port to run the rpc simulator (default: 8000)')
.option('-h, --host [host]', 'host to run the rpc simulator (default: localhost)')
.action(function(env, options) {
self.Embark.initConfig(env || 'development', {
embarkConfig: 'embark.json',
interceptLogs: false
});
self.Embark.simulator({port: options.port, host: options.host});
2016-08-18 00:29:41 +00:00
});
};
2016-10-02 21:26:57 +00:00
Cmd.prototype.test = function() {
program
.command('test')
.description('run tests')
.action(function() {
shelljs.exec('mocha test/ --no-timeouts');
2016-10-02 21:26:57 +00:00
});
};
2017-01-08 01:37:48 +00:00
Cmd.prototype.upload = function() {
2016-10-02 21:26:57 +00:00
var self = this;
program
.command('upload [platform] [environment]')
2017-01-08 01:37:48 +00:00
.description('upload your dapp to a decentralized storage. possible options: ipfs, swarm (e.g embark upload swarm)')
.action(function(platform, env, options) {
2017-01-08 01:37:48 +00:00
// TODO: get env in cmd line as well
self.Embark.initConfig(env || 'development', {
embarkConfig: 'embark.json', interceptLogs: false
2017-01-08 01:37:48 +00:00
});
self.Embark.upload(platform);
2017-01-07 21:52:29 +00:00
});
};
2016-08-18 00:29:41 +00:00
Cmd.prototype.otherCommands = function() {
program
.action(function(env){
console.log('unknown command "%s"'.red, env);
console.log("type embark --help to see the available commands");
2017-02-26 01:45:40 +00:00
process.exit(0);
2016-08-18 00:29:41 +00:00
});
};
module.exports = Cmd;