mirror of https://github.com/embarklabs/embark.git
Merge pull request #359 from embark-framework/node_module_import
better mappings
This commit is contained in:
commit
b56f20db8a
|
@ -47,6 +47,7 @@ Config.prototype.loadConfigFiles = function(options) {
|
||||||
this.loadPipelineConfigFile();
|
this.loadPipelineConfigFile();
|
||||||
|
|
||||||
this.loadContractsConfigFile();
|
this.loadContractsConfigFile();
|
||||||
|
this.loadExternalContractsFiles();
|
||||||
this.loadWebServerConfigFile();
|
this.loadWebServerConfigFile();
|
||||||
this.loadChainTrackerFile();
|
this.loadChainTrackerFile();
|
||||||
this.loadPluginContractFiles();
|
this.loadPluginContractFiles();
|
||||||
|
@ -60,6 +61,7 @@ Config.prototype.reloadConfig = function() {
|
||||||
this.loadContractsConfigFile();
|
this.loadContractsConfigFile();
|
||||||
this.loadPipelineConfigFile();
|
this.loadPipelineConfigFile();
|
||||||
this.loadContractsConfigFile();
|
this.loadContractsConfigFile();
|
||||||
|
this.loadExternalContractsFiles();
|
||||||
this.loadChainTrackerFile();
|
this.loadChainTrackerFile();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -140,6 +142,23 @@ Config.prototype.loadContractsConfigFile = function() {
|
||||||
this.contractsConfig = this._mergeConfig(configFilePath, configObject, this.env);
|
this.contractsConfig = this._mergeConfig(configFilePath, configObject, this.env);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Config.prototype.loadExternalContractsFiles = function() {
|
||||||
|
let contracts = this.contractsConfig.contracts;
|
||||||
|
for (let contractName in contracts) {
|
||||||
|
let contract = contracts[contractName];
|
||||||
|
if (!contract.file) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (fs.existsSync(contract.file)) {
|
||||||
|
this.contractsFiles.push(new File({filename: contract.file, type: "dapp_file", basedir: '', path: contract.file}));
|
||||||
|
} else if (fs.existsSync(path.join('./node_modules/', contract.file))) {
|
||||||
|
this.contractsFiles.push(new File({filename: path.join('./node_modules/', contract.file), type: "dapp_file", basedir: '', path: path.join('./node_modules/', contract.file)}));
|
||||||
|
} else {
|
||||||
|
this.logger.error("contract file not found: " + contract.file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
Config.prototype.loadStorageConfigFile = function() {
|
Config.prototype.loadStorageConfigFile = function() {
|
||||||
var versions = utils.recursiveMerge({"ipfs-api": "17.2.4"}, this.embarkConfig.versions || {});
|
var versions = utils.recursiveMerge({"ipfs-api": "17.2.4"}, this.embarkConfig.versions || {});
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,8 @@ class Solidity {
|
||||||
let filename = file.filename;
|
let filename = file.filename;
|
||||||
|
|
||||||
for (let directory of self.contractDirectories) {
|
for (let directory of self.contractDirectories) {
|
||||||
filename = filename.replace(directory, '');
|
let match = new RegExp("^" + directory);
|
||||||
|
filename = filename.replace(match, '');
|
||||||
}
|
}
|
||||||
|
|
||||||
file.content(function(fileContent) {
|
file.content(function(fileContent) {
|
||||||
|
|
|
@ -1,5 +1,18 @@
|
||||||
let solc;
|
let solc;
|
||||||
|
|
||||||
|
let fs = require('fs-extra');
|
||||||
|
let path = require('path');
|
||||||
|
|
||||||
|
function findImports(filename) {
|
||||||
|
if (fs.existsSync(filename)) {
|
||||||
|
return {contents: fs.readFileSync(filename).toString()};
|
||||||
|
}
|
||||||
|
if (fs.existsSync(path.join('./node_modules/', filename))) {
|
||||||
|
return {contents: fs.readFileSync(path.join('./node_modules/', filename)).toString()};
|
||||||
|
}
|
||||||
|
return {error: 'File not found'};
|
||||||
|
}
|
||||||
|
|
||||||
process.on('message', function (msg) {
|
process.on('message', function (msg) {
|
||||||
if (msg.action === 'loadCompiler') {
|
if (msg.action === 'loadCompiler') {
|
||||||
solc = require(msg.solcLocation);
|
solc = require(msg.solcLocation);
|
||||||
|
@ -8,7 +21,7 @@ process.on('message', function (msg) {
|
||||||
|
|
||||||
if (msg.action === 'compile') {
|
if (msg.action === 'compile') {
|
||||||
// TODO: only available in 0.4.11; need to make versions warn about this
|
// TODO: only available in 0.4.11; need to make versions warn about this
|
||||||
let output = solc.compileStandardWrapper(JSON.stringify(msg.jsonObj));
|
let output = solc.compileStandardWrapper(JSON.stringify(msg.jsonObj), findImports);
|
||||||
process.send({result: "compilation", output: output});
|
process.send({result: "compilation", output: output});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
pragma solidity ^0.4.17;
|
||||||
|
|
||||||
|
contract SimpleStorageTest2 {
|
||||||
|
uint public storedData;
|
||||||
|
|
||||||
|
function() public payable { }
|
||||||
|
|
||||||
|
function SimpleStorage(uint initialValue) public {
|
||||||
|
storedData = initialValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set(uint x) public {
|
||||||
|
storedData = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get() public view returns (uint retVal) {
|
||||||
|
return storedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -62,6 +62,15 @@
|
||||||
["$MyToken2", "$SimpleStorage"],
|
["$MyToken2", "$SimpleStorage"],
|
||||||
100
|
100
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"ERC20": {
|
||||||
|
"file": "zeppelin-solidity/contracts/token/ERC20/ERC20.sol"
|
||||||
|
},
|
||||||
|
"SimpleStorageTest": {
|
||||||
|
"file": "./some_folder/test_contract.sol",
|
||||||
|
"args": [
|
||||||
|
1000
|
||||||
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"afterDeploy": [
|
"afterDeploy": [
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
"config": "config/",
|
"config": "config/",
|
||||||
"versions": {
|
"versions": {
|
||||||
"web3.js": "1.0.0-beta.27",
|
"web3.js": "1.0.0-beta.27",
|
||||||
"solc": "0.4.17",
|
"solc": "0.4.18",
|
||||||
"ipfs-api": "17.2.6"
|
"ipfs-api": "17.2.6"
|
||||||
},
|
},
|
||||||
"plugins": {
|
"plugins": {
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
"jquery": "^1.11.3",
|
"jquery": "^1.11.3",
|
||||||
"react": "^16.0.0",
|
"react": "^16.0.0",
|
||||||
"react-bootstrap": "^0.32.0",
|
"react-bootstrap": "^0.32.0",
|
||||||
"react-dom": "^16.2.0"
|
"react-dom": "^16.2.0",
|
||||||
|
"zeppelin-solidity": "^1.8.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
pragma solidity ^0.4.17;
|
||||||
|
|
||||||
|
import "another_folder/another_test.sol";
|
||||||
|
import "zeppelin-solidity/contracts/ownership/Ownable.sol";
|
||||||
|
|
||||||
|
contract SimpleStorageTest is Ownable {
|
||||||
|
uint public storedData;
|
||||||
|
|
||||||
|
function() public payable { }
|
||||||
|
|
||||||
|
function SimpleStorage(uint initialValue) public {
|
||||||
|
storedData = initialValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set(uint x) public {
|
||||||
|
storedData = x;
|
||||||
|
}
|
||||||
|
|
||||||
|
function get() public view returns (uint retVal) {
|
||||||
|
return storedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue