Commit 3275f1b0 authored by Iuri Matias's avatar Iuri Matias

refactor compiler: rejoin compileFile and compileFiles

parent 84a4d593
...@@ -7,14 +7,10 @@ let Compiler = require('./src/compiler.js') ...@@ -7,14 +7,10 @@ let Compiler = require('./src/compiler.js')
let Deployer = require('./src/deployer.js') let Deployer = require('./src/deployer.js')
let TestRunner = require('./src/testRunner.js') let TestRunner = require('./src/testRunner.js')
var runTestFiles = function(filepath, is_directory, web3) { var runTestFiles = function(filepath, isDirectory, web3) {
async.waterfall([ async.waterfall([
function compile (next) { function compile (next) {
if (is_directory) { Compiler.compileFileOrFiles(filepath, isDirectory, next)
Compiler.compileFiles(filepath, next)
} else {
Compiler.compileFile(filepath, next)
}
}, },
function deployAllContracts (compilationResult, next) { function deployAllContracts (compilationResult, next) {
Deployer.deployAll(compilationResult, web3, function (err, contracts) { Deployer.deployAll(compilationResult, web3, function (err, contracts) {
...@@ -23,7 +19,7 @@ var runTestFiles = function(filepath, is_directory, web3) { ...@@ -23,7 +19,7 @@ var runTestFiles = function(filepath, is_directory, web3) {
} }
let contractsToTest = [] let contractsToTest = []
if (is_directory) { if (isDirectory) {
fs.readdirSync(filepath).forEach(filename => { fs.readdirSync(filepath).forEach(filename => {
if (filename.indexOf('_test.sol') < 0) { if (filename.indexOf('_test.sol') < 0) {
return return
......
...@@ -6,49 +6,26 @@ let RemixCompiler = require('remix-solidity').Compiler ...@@ -6,49 +6,26 @@ let RemixCompiler = require('remix-solidity').Compiler
// TODO: replace this with remix's own compiler code // TODO: replace this with remix's own compiler code
function compileFile (filename, cb) { function compileFileOrFiles (filename, isDirectory, cb) {
let compiler let compiler, filepath
const sources = {
'tests.sol': {content: fs.readFileSync('sol/tests.sol').toString()}
}
// TODO: for now assumes filepath dir contains all tests, later all this
// should be replaced with remix's & browser solidity compiler code
let filepath = path.dirname(filename)
fs.readdirSync(filepath).forEach(file => {
sources[file] = {content: fs.readFileSync(path.join(filepath, file)).toString()}
})
async.waterfall([
function loadCompiler (next) {
compiler = new RemixCompiler()
compiler.onInternalCompilerLoaded()
// compiler.event.register('compilerLoaded', this, function (version) {
next()
// });
},
function doCompilation (next) {
compiler.event.register('compilationFinished', this, function (success, data, source) {
next(null, data)
})
compiler.compile(sources, filepath)
}
], function (err, result) {
cb(err, result.contracts)
})
}
function compileFiles (directory, cb) {
let compiler
const sources = { const sources = {
'tests.sol': {content: fs.readFileSync('sol/tests.sol').toString()} 'tests.sol': {content: fs.readFileSync('sol/tests.sol').toString()}
} }
// TODO: for now assumes filepath dir contains all tests, later all this // TODO: for now assumes filepath dir contains all tests, later all this
// should be replaced with remix's & browser solidity compiler code // should be replaced with remix's & browser solidity compiler code
fs.readdirSync(directory).forEach(file => { if (isDirectory) {
sources[file] = {content: fs.readFileSync(path.join(directory, file)).toString()} filepath = filename
}) fs.readdirSync(filename).forEach(file => {
sources[file] = {content: fs.readFileSync(path.join(filename, file)).toString()}
})
} else {
filepath = path.dirname(filename)
fs.readdirSync(filepath).forEach(file => {
sources[file] = {content: fs.readFileSync(path.join(filepath, file)).toString()}
})
}
async.waterfall([ async.waterfall([
function loadCompiler (next) { function loadCompiler (next) {
...@@ -62,7 +39,7 @@ function compileFiles (directory, cb) { ...@@ -62,7 +39,7 @@ function compileFiles (directory, cb) {
compiler.event.register('compilationFinished', this, function (success, data, source) { compiler.event.register('compilationFinished', this, function (success, data, source) {
next(null, data) next(null, data)
}) })
compiler.compile(sources, directory) compiler.compile(sources, filepath)
} }
], function (err, result) { ], function (err, result) {
cb(err, result.contracts) cb(err, result.contracts)
...@@ -70,6 +47,5 @@ function compileFiles (directory, cb) { ...@@ -70,6 +47,5 @@ function compileFiles (directory, cb) {
} }
module.exports = { module.exports = {
compileFile: compileFile, compileFileOrFiles: compileFileOrFiles
compileFiles: compileFiles
} }
...@@ -12,7 +12,7 @@ function compileAndDeploy (filename, callback) { ...@@ -12,7 +12,7 @@ function compileAndDeploy (filename, callback) {
async.waterfall([ async.waterfall([
function compile (next) { function compile (next) {
Compiler.compileFile(filename, next) Compiler.compileFileOrFiles(filename, false, next)
}, },
function deployAllContracts (compilationResult, next) { function deployAllContracts (compilationResult, next) {
Deployer.deployAll(compilationResult, web3, next) Deployer.deployAll(compilationResult, web3, next)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment