mirror of
https://github.com/status-im/embark-area-51.git
synced 2025-02-17 09:46:37 +00:00
downlaod import files
This commit is contained in:
parent
05b1f61c9b
commit
60fb6b14d4
@ -14,26 +14,32 @@ class File {
|
|||||||
}
|
}
|
||||||
|
|
||||||
parseFileForImport(content, callback) {
|
parseFileForImport(content, callback) {
|
||||||
if (this.filename.indexOf('.sol') < 0) {
|
const self = this;
|
||||||
|
if (self.filename.indexOf('.sol') < 0) {
|
||||||
// Only supported in Solidity
|
// Only supported in Solidity
|
||||||
return callback();
|
return callback();
|
||||||
}
|
}
|
||||||
const regex = /import "([a-zA-Z0-9_\-.\\\/]+)";/g;
|
const regex = /import "([a-zA-Z0-9_\-.\\\/]+)";/g;
|
||||||
let matches;
|
let matches;
|
||||||
const filesToDownload = [];
|
const filesToDownload = [];
|
||||||
const pathWithoutFile = path.dirname(this.path);
|
const pathWithoutFile = path.dirname(self.path);
|
||||||
while ((matches = regex.exec(content))) {
|
while ((matches = regex.exec(content))) {
|
||||||
console.log('Need to download', matches[1]);
|
|
||||||
filesToDownload.push({
|
filesToDownload.push({
|
||||||
fileRelativePath: matches[1],
|
fileRelativePath: path.join(path.dirname(self.filename), matches[1]),
|
||||||
url: path.join(pathWithoutFile, matches[1])
|
url: `${pathWithoutFile}/${matches[1]}`
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
//async.each(filesToDownload, (file))
|
|
||||||
|
async.each(filesToDownload, ((fileObj, eachCb) => {
|
||||||
|
self.downloadFile(fileObj.fileRelativePath, fileObj.url, (_content) => {
|
||||||
|
eachCb();
|
||||||
|
});
|
||||||
|
}), callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
downloadFile (filename, url, callback) {
|
downloadFile (filename, url, callback) {
|
||||||
// const self = this;
|
console.log('Downloading:', filename, 'form', url);
|
||||||
|
const self = this;
|
||||||
async.waterfall([
|
async.waterfall([
|
||||||
function makeTheDir(next) {
|
function makeTheDir(next) {
|
||||||
fs.mkdirp(path.dirname(filename), (err) => {
|
fs.mkdirp(path.dirname(filename), (err) => {
|
||||||
@ -56,12 +62,12 @@ class File {
|
|||||||
},
|
},
|
||||||
function readFile(next) {
|
function readFile(next) {
|
||||||
fs.readFile(filename, next);
|
fs.readFile(filename, next);
|
||||||
}// ,
|
},
|
||||||
/*function parseForImports(content, next) {
|
function parseForImports(content, next) {
|
||||||
self.parseFileForImport(content, (err) => {
|
self.parseFileForImport(content, (err) => {
|
||||||
next(err, content);
|
next(err, content);
|
||||||
});
|
});
|
||||||
}*/
|
}
|
||||||
], (err, content) => {
|
], (err, content) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error('Error while downloading the file', err);
|
console.error('Error while downloading the file', err);
|
||||||
|
@ -2,7 +2,6 @@ pragma solidity ^0.4.7;
|
|||||||
contract SimpleStorage {
|
contract SimpleStorage {
|
||||||
uint public storedData;
|
uint public storedData;
|
||||||
import "./ownable.sol";
|
import "./ownable.sol";
|
||||||
import "../../contracts/token.sol";
|
|
||||||
|
|
||||||
function SimpleStorage(uint initialValue) {
|
function SimpleStorage(uint initialValue) {
|
||||||
storedData = initialValue;
|
storedData = initialValue;
|
||||||
|
@ -4,11 +4,13 @@ const fs = require('fs-extra');
|
|||||||
|
|
||||||
describe('embark.File', function () {
|
describe('embark.File', function () {
|
||||||
describe('parseFileForImport', () => {
|
describe('parseFileForImport', () => {
|
||||||
it('should find all the imports', function () {
|
it('should find all the imports', function (done) {
|
||||||
const contract = fs.readFileSync('./test/contracts/simple_storage.sol').toString();
|
const contract = fs.readFileSync('./test/contracts/simple_storage.sol').toString();
|
||||||
const file = new File({filename: 'simple_storage.sol',
|
const file = new File({filename: '.embark/contracts/embark-framework/embark/master/test_app/app/contracts/simple_storage.sol',
|
||||||
path: 'https://raw.githubusercontent.com/embark-framework/embark/develop/test_apps/test_app/app/contracts/simple_storage.sol'});
|
path: 'https://raw.githubusercontent.com/embark-framework/embark/develop/test_apps/test_app/app/contracts/simple_storage.sol'});
|
||||||
file.parseFileForImport(contract);
|
file.parseFileForImport(contract, () => {
|
||||||
|
done();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user