diff --git a/lib/core/file.js b/lib/core/file.js index bc97ddaa..c81d3281 100644 --- a/lib/core/file.js +++ b/lib/core/file.js @@ -24,10 +24,11 @@ class File { // Only supported in Solidity return callback(null, content); } - const regex = /import ["|']([-a-zA-Z0-9@:%_+.~#?&\/=]+)["|'];/g; + const regex = /import ["']([-a-zA-Z0-9@:%_+.~#?&\/=]+)["'];/g; let matches; const filesToDownload = []; const pathWithoutFile = path.dirname(self.path); + let newContent = content; while ((matches = regex.exec(content))) { const httpFileObj = utils.getExternalContractUrl(matches[1]); const fileObj = { @@ -36,7 +37,7 @@ class File { }; if (httpFileObj) { // Replace http import by filePath import in content - content = content.replace(matches[1], httpFileObj.filePath); + newContent = newContent.replace(matches[1], httpFileObj.filePath); fileObj.fileRelativePath = httpFileObj.filePath; fileObj.url = httpFileObj.url; @@ -49,7 +50,7 @@ class File { if (self.downloadedImports) { // We already parsed this file - return callback(null, content); + return callback(null, newContent); } self.downloadedImports = true; async.each(filesToDownload, ((fileObj, eachCb) => { @@ -57,7 +58,7 @@ class File { eachCb(); }); }), (err) => { - callback(err, content); + callback(err, newContent); }); } diff --git a/test_apps/test_app/app/contracts/SimpleStorageWithHttpImport.sol b/test_apps/test_app/app/contracts/SimpleStorageWithHttpImport.sol index 21c3505b..8af1557c 100644 --- a/test_apps/test_app/app/contracts/SimpleStorageWithHttpImport.sol +++ b/test_apps/test_app/app/contracts/SimpleStorageWithHttpImport.sol @@ -1,6 +1,7 @@ pragma solidity ^0.4.17; import "https://github.com/embark-framework/embark/blob/develop/test_apps/contracts_app/contracts/ownable.sol"; +import "https://github.com/embark-framework/embark/blob/develop/test_apps/contracts_app/contracts/contract_args.sol"; contract SimpleStorageWithHttpImport is Ownable {