From fb60cf83d0bb0dbabe9631dff4c47d90ac10a8cf Mon Sep 17 00:00:00 2001 From: Adam Miller Date: Mon, 9 Jan 2017 22:16:11 -0800 Subject: [PATCH] Make compatible with Broccoli >= 1.0.0 --- index.js | 46 +++++++++++++++++++++++++++++++++------------- package.json | 10 ++++++---- 2 files changed, 39 insertions(+), 17 deletions(-) diff --git a/index.js b/index.js index 85cb9a6..9e02cd4 100644 --- a/index.js +++ b/index.js @@ -1,35 +1,55 @@ 'use strict'; +var fs = require('fs'); +var path = require('path'); +var Plugin = require('broccoli-plugin'); +var glob = require('glob'); var jsesc = require('jsesc'); -var Filter = require('broccoli-filter'); +var mkdirp = require('mkdirp'); +// Create a subclass Glimmer derived from Plugin function BrocText (inputTree, options) { - if (!(this instanceof BrocText)) { return new BrocText(inputTree, options); } - - options = options || {}; + options || (options = {}); + + this.options = options; this.jsescOptions = options.jsesc || {}; this.jsescOptions.quotes = this.jsescOptions.quotes || 'single'; this.jsescOptions.wrap = this.jsescOptions.wrap || 'wrap'; - + if (options.extensions) { options.extensions = [].concat(options.extensions); } else { console.log('No "extensions" option defined for Broccoli Text. Defaulting to "txt" extensions.'); options.extensions = ['txt']; } - - Filter.call(this, inputTree, options); + + Plugin.call(this, inputTree, {}); + } -BrocText.prototype = Object.create(Filter.prototype); +BrocText.prototype = Object.create(Plugin.prototype); BrocText.prototype.constructor = BrocText; BrocText.prototype.targetExtension = 'js'; - -BrocText.prototype.processString = function (string) { - var escapedfileContents = jsesc(string, this.jsescOptions); - return 'export default ' + escapedfileContents + ';'; + +BrocText.prototype.build = function build(){ + + return new Promise((resolve, reject) => { + glob("**/*."+this.options.extensions, {cwd: this.inputPaths[0]}, (err, files) => { + + if (err) { return reject(err); } + + files.forEach((file) => { + var inputBuffer = fs.readFileSync(path.join(this.inputPaths[0], file)).toString('utf8'); + var out = jsesc(inputBuffer, this.jsescOptions); + mkdirp.sync(path.dirname(path.join(this.outputPath, file))); + fs.writeFileSync(path.join(this.outputPath, file).replace('.'+this.options.extensions, '.js'), 'export default ' + out + ';'); + }); + + resolve() + }); + }); }; -module.exports = BrocText; \ No newline at end of file +module.exports = BrocText; diff --git a/package.json b/package.json index 3ead358..ca0b8f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "broccoli-export-text", - "version": "0.0.2", + "version": "1.0.0", "description": "Broccoli plugin that converts selected text files to JavaScript files with es6 export statements.", "main": "index.js", "author": "Jake Detels", @@ -14,7 +14,9 @@ "javascript" ], "dependencies": { - "broccoli-filter": "^0.1.12", - "jsesc": "0.3.0" + "broccoli-plugin": "^1.3.0", + "glob": "^7.1.1", + "jsesc": "0.3.0", + "mkdirp": "^0.5.1" } -} \ No newline at end of file +}