diff --git a/dapp-structure.md b/dapp-structure.md deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/config.js b/lib/config.js index 4fda03a2..60daa9ba 100644 --- a/lib/config.js +++ b/lib/config.js @@ -24,12 +24,12 @@ Config.prototype.loadConfigFiles = function(options) { this.embarkConfig = JSON.parse(fs.readFileSync(options.embarkConfig)); this.embarkConfig.plugins = this.embarkConfig.plugins || {}; - this.loadPipelineConfigFile(); - this.loadBlockchainConfigFile(); - this.plugins = new Plugins({plugins: this.embarkConfig.plugins, logger: this.logger}); this.plugins.loadPlugins(); + this.loadPipelineConfigFile(); + this.loadBlockchainConfigFile(); + this.loadContractsConfigFile(); this.loadChainTrackerFile(); this.loadPluginContractFiles(); @@ -98,9 +98,11 @@ Config.prototype.loadChainTrackerFile = function() { }; Config.prototype.loadFiles = function(files) { + var self = this; var originalFiles = grunt.file.expand({nonull: true}, files); var readFiles = []; + // get embark.js object first originalFiles.filter(function(file) { return file.indexOf('.') >= 0; }).filter(function(file) { @@ -111,12 +113,45 @@ Config.prototype.loadFiles = function(files) { readFiles.push({filename: 'ipfs-api.js', content: fs.readFileSync(path.join(__dirname, "/../js/ipfs-api.min.js")).toString(), path: path.join(__dirname, "/../js/ipfs-api.min.js")}); readFiles.push({filename: 'orbit.js', content: fs.readFileSync(path.join(__dirname, "/../js/orbit.min.js")).toString(), path: path.join(__dirname, "/../js/orbit.min.js")}); readFiles.push({filename: 'embark.js', content: fs.readFileSync(path.join(__dirname, "/../js/build/embark.bundle.js")).toString(), path: path.join(__dirname, "/../js/build/embark.bundle.js")}); - readFiles.push({filename: 'embark-plugins.js', content: "", path: ""}); - } else { - readFiles.push({filename: file, content: fs.readFileSync(file).toString(), path: file}); } }); + // get plugins + var filesFromPlugins = []; + + var filePlugins = self.plugins.getPluginsFor('pipelineFiles'); + + if (filePlugins.length > 0) { + filePlugins.forEach(function(plugin) { + try { + var fileObjects = plugin.runFilePipeline(); + for (var i=0; i < fileObjects.length; i++) { + var fileObject = fileObjects[i]; + filesFromPlugins.push(fileObject); + } + } + catch(err) { + self.logger.error(err.message); + } + }); + } + + filesFromPlugins.filter(function(file) { + if (grunt.file.isMatch(files, file.intendedPath)) { + readFiles.push(file); + } + }); + + // get user files + originalFiles.filter(function(file) { + return file.indexOf('.') >= 0; + }).filter(function(file) { + if (file === 'embark.js') { + return; + } + readFiles.push({filename: file, content: fs.readFileSync(file).toString(), path: file}); + }); + return readFiles; }; diff --git a/lib/pipeline.js b/lib/pipeline.js index 50c0dd52..a193d4d7 100644 --- a/lib/pipeline.js +++ b/lib/pipeline.js @@ -23,50 +23,6 @@ Pipeline.prototype.build = function(abi) { if (file.filename === 'embark.js') { return {content: file.content + "\n" + abi, filename: file.filename, path: file.path, modified: true}; - } else if (file.filename === 'embark-plugins.js') { - - var filesFromPlugins = []; - - var filePlugins = self.plugins.getPluginsFor('pipelineFiles'); - - if (filePlugins.length > 0) { - filePlugins.forEach(function(plugin) { - try { - var fileObjects = plugin.runFilePipeline(); - for (var i=0; i < fileObjects.length; i++) { - var fileObject = fileObjects[i]; - //console.debug(JSON.stringify(fileObject)); - filesFromPlugins.push(fileObject); - } - } - catch(err) { - self.logger.error(err.message); - } - }); - } - - var fileContents = filesFromPlugins.map(function(file) { - if (pipelinePlugins.length > 0) { - pipelinePlugins.forEach(function(plugin) { - console.log(plugin.name + ": trying " + file.filename); - try { - if (file.options && file.options.skipPipeline) { - console.log("skipping"); - return; - } - file.content = plugin.runPipeline({targetFile: file.filename, source: file.content, modified: true}); - } - catch(err) { - self.logger.error(err.message); - } - }); - } - return file.content; - }); - - //return fileContents.join('\n'); - return {content: fileContents.join('\n'), filename: "embark-plugins.js", path: "", modified: true}; - } else if (['web3.js', 'ipfs.js', 'ipfs-api.js', 'orbit.js'].indexOf(file.filename) >= 0) { //return file.content; file.modified = true; @@ -76,6 +32,10 @@ Pipeline.prototype.build = function(abi) { if (pipelinePlugins.length > 0) { pipelinePlugins.forEach(function(plugin) { try { + if (file.options && file.options.skipPipeline) { + console.log("skipping"); + return; + } file.content = plugin.runPipeline({targetFile: file.filename, source: file.content}); file.modified = true; } @@ -107,7 +67,7 @@ Pipeline.prototype.build = function(abi) { filename = filename.replace(targetDir, ''); self.logger.info("writing file " + self.buildDir + targetDir + filename); - fs.writeFileSync(self.buildDir + targetDir + filename, fs.readFileSync(file.filename)); + fs.writeFileSync(self.buildDir + targetDir + filename, fs.readFileSync(file.path)); }); } else { var content = contentFiles.map(function(file) { diff --git a/lib/plugin.js b/lib/plugin.js index c225a10f..0d706abe 100644 --- a/lib/plugin.js +++ b/lib/plugin.js @@ -77,8 +77,8 @@ Plugin.prototype.registerPipeline = function(matcthingFiles, cb) { this.pluginTypes.push('pipeline'); }; -Plugin.prototype.addFileToPipeline = function(file, options) { - this.pipelineFiles.push({file: file, options: options}); +Plugin.prototype.addFileToPipeline = function(file, intendedPath, options) { + this.pipelineFiles.push({file: file, intendedPath: intendedPath, options: options}); this.pluginTypes.push('pipelineFiles'); }; @@ -131,7 +131,9 @@ Plugin.prototype.runFilePipeline = function() { var obj = {}; obj.filename = file.file.replace('./',''); obj.content = self.loadPluginFile(file.file).toString(); + obj.intendedPath = file.intendedPath; obj.options = file.options; + obj.path = self.pathToFile(obj.filename); return obj; }); diff --git a/lib/test.js b/lib/test.js index 4930c722..74fadb56 100644 --- a/lib/test.js +++ b/lib/test.js @@ -10,17 +10,17 @@ var ABIGenerator = require('./abi.js'); // TODO: load config file // TODO: include plugins var Test = function(options) { - try { + //try { this.sim = require('ethereumjs-testrpc'); - } catch(e) { - this.sim = false; - } + //} catch(e) { + // this.sim = false; + //} - if (this.sim === false) { - console.log('Simulator not found; Please install it with "npm install -g ethereumjs-testrpc'); - console.log('For more information see https://github.com/ethereumjs/testrpc'); - exit(); - } + //if (this.sim === false) { + // console.log('Simulator not found; Please install it with "npm install -g ethereumjs-testrpc'); + // console.log('For more information see https://github.com/ethereumjs/testrpc'); + // exit(); + //} this.web3 = new Web3(); this.web3.setProvider(this.sim.provider(options)); @@ -31,15 +31,21 @@ Test.prototype.deployAll = function(contractsConfig, cb) { var logger = new TestLogger({logLevel: 'debug'}); async.waterfall([ + function getConfig(callback) { + var config = new Config({env: 'test', logger: logger}); + config.loadConfigFiles({embarkConfig: 'embark.json'}); + callback(null, config); + }, function buildContracts(callback) { - var config = new Config({env: 'test'}); - config.contractsFiles = config.loadFiles(["app/contracts/**"]); + //var config = new Config({env: 'test'}); + //config.contractsFiles = config.loadFiles(["app/contracts/**"]); config.contractsConfig = {contracts: contractsConfig} ; var contractsManager = new ContractsManager({ contractFiles: config.contractsFiles, contractsConfig: config.contractsConfig, - logger: logger + logger: logger, + plugins: config.plugins }); contractsManager.build(callback); }, @@ -70,9 +76,10 @@ Test.prototype.deployAll = function(contractsConfig, cb) { } var web3 = self.web3; web3.eth.defaultAccount = accounts[0]; + console.log("hello!"); // TODO: replace evals with separate process so it's isolated and with // a callback - eval(result); // jshint ignore:line + //eval(result); // jshint ignore:line cb(); }); }); diff --git a/libraries-and-languages-available.md b/libraries-and-languages-available.md deleted file mode 100644 index e69de29b..00000000