Skip to content

Commit 2827deb

Browse files
committed
fix on contract add
1 parent 7ebaa7a commit 2827deb

File tree

7 files changed

+34
-15
lines changed

7 files changed

+34
-15
lines changed

lib/constants.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@
1313
"any": "any"
1414
},
1515
"events": {
16-
"contextChange": "contextChange"
16+
"contractFilesChanged": "contractFilesChanged"
1717
}
1818
}

lib/contracts/contracts.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ let async = require('async');
33

44
let Compiler = require('./compiler.js');
55
let utils = require('../utils/utils.js');
6+
const constants = require('../constants');
67

78
// TODO: create a contract object
89

@@ -16,6 +17,11 @@ class ContractsManager {
1617
this.contractDependencies = {};
1718
this.gasLimit = options.gasLimit;
1819
this.deployOnlyOnConfig = false;
20+
this.events = options.events;
21+
22+
this.events.on(constants.events.contractFilesChanged, (newContracts) => {
23+
this.contractFiles = newContracts;
24+
});
1925
}
2026

2127
build(done) {

lib/core/config.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ const File = require('./file.js');
33
const Plugins = require('./plugins.js');
44
const utils = require('../utils/utils.js');
55
const path = require('path');
6+
const deepEqual = require('deep-equal');
67
const constants = require('../constants');
78

89
var Config = function(options) {
@@ -217,8 +218,12 @@ Config.prototype.loadWebServerConfigFile = function() {
217218
};
218219

219220
Config.prototype.loadEmbarkConfigFile = function() {
220-
var contracts = this.embarkConfig.contracts;
221-
this.contractsFiles = this.loadFiles(contracts);
221+
const contracts = this.embarkConfig.contracts;
222+
const newContractsFiles = this.loadFiles(contracts);
223+
if (newContractsFiles.length !== this.contractFiles || deepEqual(newContractsFiles, this.contractFiles)) {
224+
this.events.emit(constants.events.contractFilesChanged, newContractsFiles);
225+
this.contractsFiles = newContractsFiles;
226+
}
222227
// determine contract 'root' directories
223228
this.contractDirectories = contracts.map((dir) => {
224229
return dir.split("**")[0];

lib/core/engine.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,8 @@ class Engine {
197197
contractsConfig: this.config.contractsConfig,
198198
logger: this.logger,
199199
plugins: this.plugins,
200-
gasLimit: false
200+
gasLimit: false,
201+
events: this.events
201202
});
202203

203204
this.deployManager = new DeployManager({
@@ -211,7 +212,7 @@ class Engine {
211212
onlyCompile: options.onlyCompile
212213
});
213214

214-
this.events.on('file-event', function (fileType, _path) {
215+
this.events.on('file-event', function (fileType) {
215216
// TODO: for now need to deploy on asset chanes as well
216217
// because the contractsManager config is corrupted after a deploy
217218
if (fileType === 'contract' || fileType === 'config') {

package-lock.json

Lines changed: 11 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
"colors": "^1.1.2",
3535
"commander": "^2.15.1",
3636
"css-loader": "^0.28.11",
37+
"deep-equal": "^1.0.1",
3738
"ejs": "^2.5.8",
3839
"ethereumjs-testrpc": "^6.0.3",
3940
"file-loader": "^1.1.5",

test/contracts.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ let ContractsManager = require('../lib/contracts/contracts.js');
33
let Logger = require('../lib/core/logger.js');
44
let File = require('../lib/core/file.js');
55
let TestLogger = require('../lib/tests/test_logger.js');
6+
let Events = require('../lib/core/events');
67
let assert = require('assert');
78

89
//let SolidityCompiler = require('../lib/modules/solidity');
@@ -55,7 +56,8 @@ describe('embark.Contracts', function() {
5556
}
5657
}
5758
},
58-
logger: new Logger({})
59+
logger: new Logger({}),
60+
events: new Events()
5961
});
6062

6163
describe('#build', function() {
@@ -146,7 +148,8 @@ describe('embark.Contracts', function() {
146148
}
147149
}
148150
},
149-
logger: new Logger({})
151+
logger: new Logger({}),
152+
events: new Events()
150153
});
151154

152155
describe('#build', function() {

0 commit comments

Comments
 (0)