embark-area-51/bin/embark

166 lines
4.8 KiB
Plaintext
Raw Normal View History

2015-05-24 13:03:43 +00:00
#!/usr/bin/env node
var program = require('commander');
var path = require('path');
var wrench = require('wrench');
var grunt = require('grunt');
require('shelljs/global');
2015-07-07 10:51:03 +00:00
var readYaml = require('read-yaml');
var Embark = require('embark-framework');
2015-05-24 13:03:43 +00:00
2015-06-10 12:43:15 +00:00
var run = function(cmd) {
if (exec(cmd).code != 0) {
exit();
}
}
2015-07-15 12:16:42 +00:00
var deploy = function(embarkConfig) {
2015-07-15 00:58:08 +00:00
contractFiles = grunt.file.expand(embarkConfig.contracts);
destFile = embarkConfig.output
Embark.init()
Embark.blockchainConfig.loadConfigFile(embarkConfig.blockchainConfig)
Embark.contractsConfig.loadConfigFile(embarkConfig.contractsConfig)
abi = Embark.deployContracts(env, contractFiles, destFile)
grunt.file.write(destFile, abi);
}
2015-05-24 13:03:43 +00:00
program
2015-07-15 12:21:38 +00:00
.version('0.6.1')
2015-05-24 13:03:43 +00:00
program.command('new [name]').description('New application').action(function(name) {
if (name === undefined) {
console.log("please specify the app name");
exit;
}
var prefPath = path.join(__dirname + '/../boilerplate');
var targetDir = "./" + name;
wrench.copyDirSyncRecursive(prefPath, targetDir);
cd(targetDir);
2015-06-10 12:43:15 +00:00
run('npm install');
2015-05-24 13:03:43 +00:00
console.log('\n\ninit complete');
});
program.command('deploy [env]').description('deploy contracts').action(function(env_) {
2015-07-07 10:51:03 +00:00
var env = env_ || 'development';
var embarkConfig = readYaml.sync("./embark.yml");
if (embarkConfig.type === "grunt") {
run("grunt deploy_contracts:" + env);
}
else {
2015-07-15 00:58:08 +00:00
deploy();
}
2015-05-24 13:03:43 +00:00
});
program.command('build [env]').description('build dapp').action(function(env_) {
var env = env_ || 'development';
2015-07-10 03:05:34 +00:00
var embarkConfig = readYaml.sync("./embark.yml");
if (embarkConfig.type === "grunt") {
run("grunt clean");
run("grunt deploy_contracts:" + env);
run('grunt build:' + env);
}
2015-07-13 02:11:59 +00:00
else if (embarkConfig.type === "meteor") {
2015-07-15 00:58:08 +00:00
deploy();
2015-07-13 02:11:59 +00:00
run("meteor-build-client ./build -p ''");
}
2015-05-24 13:03:43 +00:00
});
2015-06-10 12:37:14 +00:00
program.command('ipfs [env]').description('build dapp and make it available in ipfs').action(function(env_) {
2015-06-06 02:54:50 +00:00
var env = env_ || 'development';
2015-07-10 03:05:34 +00:00
var embarkConfig = readYaml.sync("./embark.yml");
if (embarkConfig.type === "grunt") {
run("grunt clean")
run("grunt deploy_contracts:" + env)
run('grunt build:' + env)
run('grunt ipfs:' + env)
}
2015-07-13 02:11:59 +00:00
else if (embarkConfig.type === "meteor") {
2015-07-15 00:58:08 +00:00
deploy();
run("meteor-build-client ./build -p ''");
2015-07-13 02:11:59 +00:00
Embark.release.ipfs("build/")
}
2015-07-10 03:05:34 +00:00
else {
2015-07-13 02:11:59 +00:00
console.log("command not available in manual mode yet");
2015-07-10 03:05:34 +00:00
}
2015-06-06 02:54:50 +00:00
});
2015-05-24 13:03:43 +00:00
program.command('run [env]').description('run dapp').action(function(env_) {
var env = env_ || 'development';
2015-07-10 03:05:34 +00:00
var embarkConfig = readYaml.sync("./embark.yml");
if (embarkConfig.type === "grunt") {
run('grunt deploy:' + env);
}
else {
console.log("command not available in meteor or manual mode yet");
2015-07-14 23:11:16 +00:00
console.log("try instead embark run");
2015-07-10 03:05:34 +00:00
}
2015-05-24 13:03:43 +00:00
});
2015-06-20 12:35:49 +00:00
program.command('spec').description('run specs').action(function() {
2015-07-10 03:05:34 +00:00
var embarkConfig = readYaml.sync("./embark.yml");
if (embarkConfig.type === "grunt") {
run('jasmine');
}
else {
console.log("command not available in meteor or manual mode yet");
2015-07-15 00:58:08 +00:00
console.log("note: you can use embark tests with any framework");
2015-07-10 03:05:34 +00:00
}
2015-06-20 12:35:49 +00:00
});
2015-05-24 13:03:43 +00:00
program.command('blockchain [env]').description('run blockchain').action(function(env_) {
var env = env_ || 'development';
2015-07-10 03:05:34 +00:00
var embarkConfig = readYaml.sync("./embark.yml");
if (embarkConfig.type === "grunt") {
run('grunt blockchain:' + env);
}
else {
Embark.init()
Embark.blockchainConfig.loadConfigFile(embarkConfig.blockchainConfig)
Embark.contractsConfig.loadConfigFile(embarkConfig.contractsConfig)
//TODO: better with --exec, but need to fix console bug first
wrench.copyDirSyncRecursive(__dirname + "/../js", "/tmp", {forceDelete: true});
Embark.startBlockchain(env, true);
2015-07-10 03:05:34 +00:00
}
2015-05-24 13:03:43 +00:00
});
2015-05-24 13:21:08 +00:00
program.command('demo').description('create a working dapp with a SimpleStorage contract').action(function() {
var boilerPath = path.join(__dirname + '/../boilerplate');
var demoPath = path.join(__dirname + '/../demo');
var targetDir = "./embark_demo";
wrench.copyDirSyncRecursive(boilerPath, targetDir);
2015-06-19 14:27:19 +00:00
wrench.copyDirSyncRecursive(demoPath + "/app", targetDir + "/app", {forceDelete: true});
wrench.copyDirSyncRecursive(demoPath + "/config", targetDir + "/config", {forceDelete: true});
wrench.copyDirSyncRecursive(demoPath + "/spec", targetDir + "/spec", {forceDelete: true});
2015-05-24 13:21:08 +00:00
cd(targetDir);
2015-06-10 12:43:15 +00:00
run('npm install');
2015-05-24 13:21:08 +00:00
console.log('\n\ninit complete');
});
2015-07-13 02:18:59 +00:00
program.command('meteor_demo').description('create a working meteor dapp with a SimpleStorage contract').action(function() {
var boilerPath = path.join(__dirname + '/../demo_meteor');
var targetDir = "./embark_demo";
wrench.copyDirSyncRecursive(boilerPath, targetDir);
console.log('\n\ninit complete');
});
2015-05-24 13:03:43 +00:00
program.parse(process.argv)
if (!process.argv.slice(2).length) {
program.outputHelp();
}
2015-07-08 10:17:05 +00:00
exit();