Merge branch 'meteor' into develop
This commit is contained in:
commit
dcc9aa7631
57
bin/embark
57
bin/embark
|
@ -51,31 +51,80 @@ program.command('deploy [env]').description('deploy contracts').action(function(
|
||||||
|
|
||||||
program.command('build [env]').description('build dapp').action(function(env_) {
|
program.command('build [env]').description('build dapp').action(function(env_) {
|
||||||
var env = env_ || 'development';
|
var env = env_ || 'development';
|
||||||
|
var embarkConfig = readYaml.sync("./embark.yml");
|
||||||
|
|
||||||
|
if (embarkConfig.type === "grunt") {
|
||||||
run("grunt clean");
|
run("grunt clean");
|
||||||
run("grunt deploy_contracts:" + env);
|
run("grunt deploy_contracts:" + env);
|
||||||
run('grunt build:' + env);
|
run('grunt build:' + env);
|
||||||
|
}
|
||||||
|
else if (embarkConfig.type === "meteor") {
|
||||||
|
//deploy
|
||||||
|
run("meteor-build-client ./build -p ''");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
program.command('ipfs [env]').description('build dapp and make it available in ipfs').action(function(env_) {
|
program.command('ipfs [env]').description('build dapp and make it available in ipfs').action(function(env_) {
|
||||||
var env = env_ || 'development';
|
var env = env_ || 'development';
|
||||||
|
var embarkConfig = readYaml.sync("./embark.yml");
|
||||||
|
|
||||||
|
if (embarkConfig.type === "grunt") {
|
||||||
run("grunt clean")
|
run("grunt clean")
|
||||||
run("grunt deploy_contracts:" + env)
|
run("grunt deploy_contracts:" + env)
|
||||||
run('grunt build:' + env)
|
run('grunt build:' + env)
|
||||||
run('grunt ipfs:' + env)
|
run('grunt ipfs:' + env)
|
||||||
|
}
|
||||||
|
else if (embarkConfig.type === "meteor") {
|
||||||
|
//deploy
|
||||||
|
//build
|
||||||
|
Embark = require('embark-framework')
|
||||||
|
Embark.release.ipfs("build/")
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log("command not available in manual mode yet");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
program.command('run [env]').description('run dapp').action(function(env_) {
|
program.command('run [env]').description('run dapp').action(function(env_) {
|
||||||
var env = env_ || 'development';
|
var env = env_ || 'development';
|
||||||
|
var embarkConfig = readYaml.sync("./embark.yml");
|
||||||
|
|
||||||
|
if (embarkConfig.type === "grunt") {
|
||||||
run('grunt deploy:' + env);
|
run('grunt deploy:' + env);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log("command not available in meteor or manual mode yet");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
program.command('spec').description('run specs').action(function() {
|
program.command('spec').description('run specs').action(function() {
|
||||||
|
var embarkConfig = readYaml.sync("./embark.yml");
|
||||||
|
|
||||||
|
if (embarkConfig.type === "grunt") {
|
||||||
run('jasmine');
|
run('jasmine');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
console.log("command not available in meteor or manual mode yet");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
program.command('blockchain [env]').description('run blockchain').action(function(env_) {
|
program.command('blockchain [env]').description('run blockchain').action(function(env_) {
|
||||||
var env = env_ || 'development';
|
var env = env_ || 'development';
|
||||||
|
var embarkConfig = readYaml.sync("./embark.yml");
|
||||||
|
|
||||||
|
if (embarkConfig.type === "grunt") {
|
||||||
run('grunt blockchain:' + env);
|
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);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
program.command('demo').description('create a working dapp with a SimpleStorage contract').action(function() {
|
program.command('demo').description('create a working dapp with a SimpleStorage contract').action(function() {
|
||||||
|
@ -93,6 +142,14 @@ program.command('demo').description('create a working dapp with a SimpleStorage
|
||||||
console.log('\n\ninit complete');
|
console.log('\n\ninit complete');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
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');
|
||||||
|
});
|
||||||
|
|
||||||
program.parse(process.argv)
|
program.parse(process.argv)
|
||||||
|
|
||||||
if (!process.argv.slice(2).length) {
|
if (!process.argv.slice(2).length) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
type: "grunt" #other options: meteor, manual
|
type: "grunt" #other options: meteor, manual
|
||||||
#contracts: ["app/contracts/**"]
|
#contracts: ["app/contracts/**/*.sol"]
|
||||||
#output: "generated/tmp/abi.js"
|
#output: "src/embark.js"
|
||||||
#blockchainConfig: "config/blockchain.yml"
|
#blockchainConfig: "config/blockchain.yml"
|
||||||
#contractsConfig: "config/contracts.yml"
|
#contractsConfig: "config/contracts.yml"
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
# This file contains information which helps Meteor properly upgrade your
|
||||||
|
# app when you run 'meteor update'. You should check it into version control
|
||||||
|
# with your project.
|
||||||
|
|
||||||
|
notices-for-0.9.0
|
||||||
|
notices-for-0.9.1
|
||||||
|
0.9.4-platform-file
|
||||||
|
notices-for-facebook-graph-api-2
|
|
@ -0,0 +1 @@
|
||||||
|
local
|
|
@ -0,0 +1,7 @@
|
||||||
|
# This file contains a token that is unique to your project.
|
||||||
|
# Check it into your repository along with the rest of this directory.
|
||||||
|
# It can be used for purposes such as:
|
||||||
|
# - ensuring you don't accidentally deploy one app on top of another
|
||||||
|
# - providing package authors with aggregated statistics
|
||||||
|
|
||||||
|
v2fbp61wvu7nd11xgkdz
|
|
@ -0,0 +1,10 @@
|
||||||
|
# Meteor packages used by this project, one per line.
|
||||||
|
# Check this file (and the other files in this directory) into your repository.
|
||||||
|
#
|
||||||
|
# 'meteor add' and 'meteor remove' will edit this file for you,
|
||||||
|
# but you can also edit it by hand.
|
||||||
|
|
||||||
|
meteor-platform
|
||||||
|
autopublish
|
||||||
|
insecure
|
||||||
|
ethereum:web3
|
|
@ -0,0 +1,2 @@
|
||||||
|
server
|
||||||
|
browser
|
|
@ -0,0 +1 @@
|
||||||
|
METEOR@1.1.0.2
|
|
@ -0,0 +1,49 @@
|
||||||
|
autopublish@1.0.3
|
||||||
|
autoupdate@1.2.1
|
||||||
|
base64@1.0.3
|
||||||
|
binary-heap@1.0.3
|
||||||
|
blaze@2.1.2
|
||||||
|
blaze-tools@1.0.3
|
||||||
|
boilerplate-generator@1.0.3
|
||||||
|
callback-hook@1.0.3
|
||||||
|
check@1.0.5
|
||||||
|
ddp@1.1.0
|
||||||
|
deps@1.0.7
|
||||||
|
ejson@1.0.6
|
||||||
|
ethereum:web3@0.8.1
|
||||||
|
fastclick@1.0.3
|
||||||
|
geojson-utils@1.0.3
|
||||||
|
html-tools@1.0.4
|
||||||
|
htmljs@1.0.4
|
||||||
|
http@1.1.0
|
||||||
|
id-map@1.0.3
|
||||||
|
insecure@1.0.3
|
||||||
|
jquery@1.11.3_2
|
||||||
|
json@1.0.3
|
||||||
|
launch-screen@1.0.2
|
||||||
|
livedata@1.0.13
|
||||||
|
logging@1.0.7
|
||||||
|
meteor@1.1.6
|
||||||
|
meteor-platform@1.2.2
|
||||||
|
minifiers@1.1.5
|
||||||
|
minimongo@1.0.8
|
||||||
|
mobile-status-bar@1.0.3
|
||||||
|
mongo@1.1.0
|
||||||
|
observe-sequence@1.0.6
|
||||||
|
ordered-dict@1.0.3
|
||||||
|
random@1.0.3
|
||||||
|
reactive-dict@1.1.0
|
||||||
|
reactive-var@1.0.5
|
||||||
|
reload@1.1.3
|
||||||
|
retry@1.0.3
|
||||||
|
routepolicy@1.0.5
|
||||||
|
session@1.1.0
|
||||||
|
spacebars@1.0.6
|
||||||
|
spacebars-compiler@1.0.6
|
||||||
|
templating@1.1.1
|
||||||
|
tracker@1.0.7
|
||||||
|
ui@1.0.6
|
||||||
|
underscore@1.0.3
|
||||||
|
url@1.0.4
|
||||||
|
webapp@1.2.0
|
||||||
|
webapp-hashing@1.0.3
|
|
@ -0,0 +1 @@
|
||||||
|
web3.setProvider(new web3.providers.HttpProvider('http://localhost:8101'));web3.eth.defaultAccount = web3.eth.accounts[0];SimpleStorageAbi = [{"constant":true,"inputs":[],"name":"storedData","outputs":[{"name":"","type":"uint256"}],"type":"function"},{"constant":false,"inputs":[{"name":"x","type":"uint256"}],"name":"set","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"get","outputs":[{"name":"retVal","type":"uint256"}],"type":"function"},{"inputs":[{"name":"initialValue","type":"uint256"}],"type":"constructor"}];SimpleStorageContract = web3.eth.contract(SimpleStorageAbi);SimpleStorage = SimpleStorageContract.at('0x823802b31f5856bcf5a8a99f791934f9593afbf8');
|
|
@ -0,0 +1 @@
|
||||||
|
/* CSS declarations go here */
|
|
@ -0,0 +1,29 @@
|
||||||
|
<head>
|
||||||
|
<title>Embark - SimpleStorage Demo</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h3>Embark - SimpleStorage Demo</h3>
|
||||||
|
|
||||||
|
{{> set_value}}
|
||||||
|
|
||||||
|
{{> current_value}}
|
||||||
|
|
||||||
|
<div class="logs">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
|
||||||
|
<template name="current_value">
|
||||||
|
<div>
|
||||||
|
<button class="get">Get Value</button>
|
||||||
|
<br>value is <span class="value">{{value}}</span>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template name="set_value">
|
||||||
|
<div>
|
||||||
|
<input type="text" class="text" value="10">
|
||||||
|
<button class="set">Set Value</button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
if (Meteor.isClient) {
|
||||||
|
Session.setDefault('value', 0);
|
||||||
|
|
||||||
|
var addToLog = function(txt) {
|
||||||
|
$(".logs").append("<br>" + txt);
|
||||||
|
}
|
||||||
|
|
||||||
|
Template.current_value.helpers({
|
||||||
|
value: function () {
|
||||||
|
return Session.get('value');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.current_value.events({
|
||||||
|
'click button': function () {
|
||||||
|
var value = SimpleStorage.get().toNumber();
|
||||||
|
Session.set('value', value);
|
||||||
|
addToLog("SimpleStorage.get()");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Template.set_value.events({
|
||||||
|
'click button': function () {
|
||||||
|
var value = parseInt($("input.text").val(), 10);
|
||||||
|
SimpleStorage.set(value);
|
||||||
|
addToLog("SimpleStorage.set("+value+")");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Meteor.isServer) {
|
||||||
|
Meteor.startup(function () {
|
||||||
|
// code to run on server at startup
|
||||||
|
});
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
development:
|
||||||
|
rpc_host: localhost
|
||||||
|
rpc_port: 8101
|
||||||
|
rpc_whitelist: "*"
|
||||||
|
minerthreads: 1
|
||||||
|
datadir: /tmp/embark
|
||||||
|
mine_when_needed: true
|
||||||
|
gas_limit: 500000
|
||||||
|
gas_price: 10000000000000
|
||||||
|
console: false
|
||||||
|
account:
|
||||||
|
init: true
|
||||||
|
password: config/password
|
||||||
|
staging:
|
||||||
|
rpc_host: localhost
|
||||||
|
rpc_port: 8101
|
||||||
|
rpc_whitelist: "*"
|
||||||
|
datadir: default
|
||||||
|
network_id: 0
|
||||||
|
console: true
|
||||||
|
account:
|
||||||
|
init: false
|
||||||
|
address:
|
|
@ -0,0 +1,8 @@
|
||||||
|
development:
|
||||||
|
SimpleStorage:
|
||||||
|
args:
|
||||||
|
- 100
|
||||||
|
staging:
|
||||||
|
SimpleStorage:
|
||||||
|
args:
|
||||||
|
- 100
|
|
@ -0,0 +1 @@
|
||||||
|
dev_password
|
|
@ -0,0 +1,14 @@
|
||||||
|
contract SimpleStorage {
|
||||||
|
uint public storedData;
|
||||||
|
|
||||||
|
function SimpleStorage(uint initialValue) {
|
||||||
|
storedData = initialValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set(uint x) {
|
||||||
|
storedData = x;
|
||||||
|
}
|
||||||
|
function get() constant returns (uint retVal) {
|
||||||
|
return storedData;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
type: "meteor"
|
||||||
|
contracts: ["contracts/**/*.sol"]
|
||||||
|
output: "client/embark.js"
|
||||||
|
blockchainConfig: "config/blockchain.yml"
|
||||||
|
contractsConfig: "config/contracts.yml"
|
|
@ -44,7 +44,7 @@ Blockchain.prototype.init_command = function() {
|
||||||
return this.generate_basic_command() + "account new ";
|
return this.generate_basic_command() + "account new ";
|
||||||
}
|
}
|
||||||
|
|
||||||
Blockchain.prototype.run_command = function(address) {
|
Blockchain.prototype.run_command = function(address, use_tmp) {
|
||||||
var cmd = this.generate_basic_command();
|
var cmd = this.generate_basic_command();
|
||||||
var config = this.config;
|
var config = this.config;
|
||||||
|
|
||||||
|
@ -57,8 +57,13 @@ Blockchain.prototype.run_command = function(address) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.mine_when_needed) {
|
if (config.mine_when_needed) {
|
||||||
|
if (use_tmp) {
|
||||||
|
cmd += "js /tmp/mine.js";
|
||||||
|
}
|
||||||
|
else {
|
||||||
cmd += "js node_modules/embark-framework/js/mine.js";
|
cmd += "js node_modules/embark-framework/js/mine.js";
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
|
@ -84,10 +89,10 @@ Blockchain.prototype.get_address = function() {
|
||||||
return address;
|
return address;
|
||||||
}
|
}
|
||||||
|
|
||||||
Blockchain.prototype.startChain = function() {
|
Blockchain.prototype.startChain = function(use_tmp) {
|
||||||
var address = this.get_address();
|
var address = this.get_address();
|
||||||
console.log("running: " + this.run_command(address));
|
console.log("running: " + this.run_command(address, use_tmp));
|
||||||
exec(this.run_command(address));
|
exec(this.run_command(address, use_tmp));
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = Blockchain
|
module.exports = Blockchain
|
||||||
|
|
|
@ -30,9 +30,9 @@ Embark = {
|
||||||
return new Tests(this.contractsConfig, contractFiles);
|
return new Tests(this.contractsConfig, contractFiles);
|
||||||
},
|
},
|
||||||
|
|
||||||
startBlockchain: function(env) {
|
startBlockchain: function(env, use_tmp) {
|
||||||
var chain = new Blockchain(this.blockchainConfig.config(env));
|
var chain = new Blockchain(this.blockchainConfig.config(env));
|
||||||
chain.startChain();
|
chain.startChain(use_tmp);
|
||||||
},
|
},
|
||||||
|
|
||||||
deployContracts: function(env, contractFiles, destFile) {
|
deployContracts: function(env, contractFiles, destFile) {
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
require('shelljs/global');
|
require('shelljs/global');
|
||||||
|
|
||||||
ipfs = function() {
|
ipfs = function(build_dir) {
|
||||||
ipfs_path = "~/go/bin";
|
ipfs_path = "~/go/bin";
|
||||||
|
|
||||||
build_dir = "dist/dapp/";
|
|
||||||
|
|
||||||
cmd = ipfs_path + "/ipfs add -r " + build_dir;
|
cmd = ipfs_path + "/ipfs add -r " + build_dir;
|
||||||
|
|
||||||
console.log("=== adding " + cmd + " to ipfs");
|
console.log("=== adding " + cmd + " to ipfs");
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
"hashmerge": "^1.0.2",
|
"hashmerge": "^1.0.2",
|
||||||
"jasmine": "^2.3.1",
|
"jasmine": "^2.3.1",
|
||||||
"matchdep": "^0.3.0",
|
"matchdep": "^0.3.0",
|
||||||
|
"meteor-build-client": "^0.1.6",
|
||||||
"methodmissing": "^0.0.3",
|
"methodmissing": "^0.0.3",
|
||||||
"python": "^0.0.4",
|
"python": "^0.0.4",
|
||||||
"read-yaml": "^1.0.0",
|
"read-yaml": "^1.0.0",
|
||||||
|
|
|
@ -3,5 +3,5 @@ module.exports = (grunt) ->
|
||||||
grunt.registerTask "ipfs", "distribute into ipfs", (env_) =>
|
grunt.registerTask "ipfs", "distribute into ipfs", (env_) =>
|
||||||
env = env_ || "development"
|
env = env_ || "development"
|
||||||
Embark = require('embark-framework')
|
Embark = require('embark-framework')
|
||||||
Embark.release.ipfs()
|
Embark.release.ipfs("dist/dapp/")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue