diff --git a/lib/pipeline/pipeline.js b/lib/pipeline/pipeline.js index c08a2f71..d8c66f47 100644 --- a/lib/pipeline/pipeline.js +++ b/lib/pipeline/pipeline.js @@ -71,144 +71,127 @@ class Pipeline { importsList[importName] = importLocation; }); - for (let contractName in contractsJSON) { - let contractCode = self.buildContractJS(contractName); - let filePath = fs.dappPath(".embark", contractName + '.js'); - fs.writeFileSync(filePath, contractCode); - importsList["Embark/contracts/" + contractName] = filePath; - } - - // limit:1 due to issues when downloading required files such as web3.js - async.eachOfLimit(self.assetFiles, 1, function (files, targetFile, cb) { - // limit:1 due to issues when downloading required files such as web3.js - async.mapLimit(files, 1, - function (file, fileCb) { - file = new File(file); // Re-instantiate a File as through the process, we lose its prototype - self.log("reading " + file.filename); - - if (file.filename.indexOf('.js') >= 0) { - - let realCwd; - - async.waterfall([ - - function findImports(next) { - self.webpackRun(file.filename, {}, false, importsList, false, next); - }, - - function changeCwd(next) { - realCwd = utils.pwd(); - process.chdir(fs.embarkPath('')); - next(); - }, - - //function findImportsPhase2(next) { - // console.log("====> findImports_2"); - // self.webpackRun(file.filename, { - // externals: function(context, request, callback) { - // if (request === utils.joinPath(fs.dappPath(), file.filename)) { - // callback(); - // } else { - // //if (request.indexOf('Embark/contracts/') === 0) { - // // let contractName = request.split('/')[2]; - // // let contractCode = self.buildContractJS(contractName); - // // let filePath = utils.joinPath(fs.dappPath(), ".embark", contractName + '.js'); - // // fs.writeFileSync(filePath, contractCode); - // // importsList[request] = filePath; - // //} - // callback(null, "amd " + Math.random()); - // } - // } - // }, true, importsList, next); - //}, - - function runWebpack(next) { - self.webpackRun(file.filename, {}, true, importsList, true, next); - }, - - function changeCwdBack(next) { - process.chdir(realCwd); - next(); - }, - - function checkFile(next) { - fs.access('./.embark/' + file.filename, (err) => { - if (err) { - self.log("couldn't find file: " + file.filename); - return next("couldn't find file: " + file.filename); - } - next(); - }); - }, - - function readFile(next) { - fs.readFile('./.embark/' + file.filename, (err, data) => { - if (err) { - return next(err); - } - next(null, data.toString()); - }); - }, - - function runPluginsOnContent(fileContent, next) { - self.runPlugins(file, fileContent, next); - } - - ], function (err, contentFile) { - if (err) { - process.chdir(realCwd); - self.log(err); - return fileCb(err); - } - - fileCb(null, contentFile); - }); - } else { - file.content(function (fileContent) { - self.runPlugins(file, fileContent, fileCb); - }); - } - }, - function (err, contentFiles) { - if (err) { - self.log('errors found while generating ' + targetFile); - } - let dir = targetFile.split('/').slice(0, -1).join('/'); - self.log("creating dir " + self.buildDir + dir); - fs.mkdirpSync(self.buildDir + dir); - - // if it's a directory - if (targetFile.slice(-1) === '/' || targetFile.indexOf('.') === -1) { - let targetDir = targetFile; - - if (targetDir.slice(-1) !== '/') { - targetDir = targetDir + '/'; - } - - async.each(contentFiles, function (file, mapCb) { - let filename = file.filename.replace(file.basedir + '/', ''); - self.log("writing file " + (self.buildDir + targetDir + filename).bold.dim); - - fs.copy(file.path, self.buildDir + targetDir + filename, {overwrite: true}, mapCb); - }, cb); - return; - } - - let content = contentFiles.map(function (file) { - if (file === undefined) { - return ""; - } - return file.content; - }).join("\n"); - - self.log("writing file ASYNC " + (self.buildDir + targetFile).bold.dim); - fs.writeFile(self.buildDir + targetFile, content, cb); - } - ); + async.waterfall([ + function writeContracts(next) { + async.each(Object.keys(contractsJSON), (contractName, eachCb) => { + let contractCode = self.buildContractJS(contractName); + let filePath = fs.dappPath(".embark", contractName + '.js'); + importsList["Embark/contracts/" + contractName] = filePath; + fs.writeFile(filePath, contractCode, eachCb); + }, next); }, - function (_err) { - callback(); - }); + function assetFileWrite(next) { + // limit:1 due to issues when downloading required files such as web3.js + async.eachOfLimit(self.assetFiles, 1, function (files, targetFile, cb) { + // limit:1 due to issues when downloading required files such as web3.js + async.mapLimit(files, 1, + function (file, fileCb) { + file = new File(file); // Re-instantiate a File as through the process, we lose its prototype + self.log("reading " + file.filename); + + if (file.filename.indexOf('.js') < 0) { + return file.content(function (fileContent) { + self.runPlugins(file, fileContent, fileCb); + }); + } + + // JS files + let realCwd; + + async.waterfall([ + + function findImports(next) { + self.webpackRun(file.filename, {}, false, importsList, false, next); + }, + + function changeCwd(next) { + realCwd = utils.pwd(); + process.chdir(fs.embarkPath('')); + next(); + }, + + function runWebpack(next) { + self.webpackRun(file.filename, {}, true, importsList, true, next); + }, + + function changeCwdBack(next) { + process.chdir(realCwd); + next(); + }, + + function checkFile(next) { + fs.access('./.embark/' + file.filename, (err) => { + if (err) { + self.log("couldn't find file: " + file.filename); + return next("couldn't find file: " + file.filename); + } + next(); + }); + }, + + function readFile(next) { + fs.readFile('./.embark/' + file.filename, (err, data) => { + if (err) { + return next(err); + } + next(null, data.toString()); + }); + }, + + function runPluginsOnContent(fileContent, next) { + self.runPlugins(file, fileContent, next); + } + + ], function (err, contentFile) { + if (err) { + process.chdir(realCwd); + self.log(err); + return fileCb(err); + } + + fileCb(null, contentFile); + }); + }, + function (err, contentFiles) { + if (err) { + self.log('errors found while generating ' + targetFile); + } + let dir = targetFile.split('/').slice(0, -1).join('/'); + self.log("creating dir " + self.buildDir + dir); + fs.mkdirpSync(self.buildDir + dir); + + // if it's a directory + if (targetFile.slice(-1) === '/' || targetFile.indexOf('.') === -1) { + let targetDir = targetFile; + + if (targetDir.slice(-1) !== '/') { + targetDir = targetDir + '/'; + } + + async.each(contentFiles, function (file, mapCb) { + let filename = file.filename.replace(file.basedir + '/', ''); + self.log("writing file " + (self.buildDir + targetDir + filename).bold.dim); + + fs.copy(file.path, self.buildDir + targetDir + filename, {overwrite: true}, mapCb); + }, cb); + return; + } + + let content = contentFiles.map(function (file) { + if (file === undefined) { + return ""; + } + return file.content; + }).join("\n"); + + self.log("writing file " + (self.buildDir + targetFile).bold.dim); + fs.writeFile(self.buildDir + targetFile, content, cb); + } + ); + }, + next); + } + ], callback); }); }