Skip to content

Commit

Permalink
Update our SnippetFinder plugin to use broccoli-plugin and update rel…
Browse files Browse the repository at this point in the history
…ated deps
  • Loading branch information
lukemelia committed Sep 15, 2018
1 parent 4eb59c7 commit 0e531f3
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 74 deletions.
76 changes: 35 additions & 41 deletions freestyle-usage-snippet-finder.js
@@ -1,13 +1,13 @@
/*eslint-env node*/

var Writer = require('broccoli-writer');
var glob = require('glob');
var fs = require('fs');
var path = require('path');
const glob = require('glob');
const fs = require('fs');
const path = require('path');
const BroccoliPlugin = require('broccoli-plugin');

function naiveMerge(obj1, obj2) {
var obj3 = {};
var prop;
let obj3 = {};
let prop;
for (prop in obj1) { obj3[prop] = obj1[prop]; }
for (prop in obj2) { obj3[prop] = obj2[prop]; }
return obj3;
Expand All @@ -26,11 +26,11 @@ function findFiles(srcDir) {
}

function extractHbsComponentSnippets(fileContent, componentName, ui) {
var processingSnippet = false;
var insideOpeningTag = false;
var snippetLines = [];
var snippets = {};
var name;
let processingSnippet = false;
let insideOpeningTag = false;
let snippetLines = [];
let snippets = {};
let name;
fileContent.split("\n").forEach(function(line) {
if (processingSnippet) {
if (insideOpeningTag) {
Expand Down Expand Up @@ -72,10 +72,10 @@ function extractHbsComponentSnippets(fileContent, componentName, ui) {
}

function extractCommentSnippets(fileContent) {
var inside = false;
var content = [];
var output = {};
var name;
let inside = false;
let content = [];
let output = {};
let name;
fileContent.split("\n").forEach(function(line) {
if (inside) {
if (/\bEND-FREESTYLE-USAGE\b/.test(line)) {
Expand All @@ -96,33 +96,27 @@ function extractCommentSnippets(fileContent) {
return output;
}

function SnippetFinder(inputTree, ui) {
if (!(this instanceof SnippetFinder)) {
return new SnippetFinder(inputTree, ui);
module.exports = class SnippetFinder extends BroccoliPlugin {
constructor(inputTree, ui) {
super(inputTree, {});
this.inputTree = inputTree;
this.ui = ui;
}
this.inputTree = inputTree;
this.ui = ui;
}

SnippetFinder.prototype = Object.create(Writer.prototype);
SnippetFinder.prototype.constructor = SnippetFinder;

SnippetFinder.prototype.write = function(readTree, destDir) {
var self = this;
return readTree(this.inputTree).then(findFiles).then(function(files) {
files.forEach(function(filename) {
var freestyleUsageSnippets = extractHbsComponentSnippets(fs.readFileSync(filename, 'utf-8'), 'freestyle-usage', self.ui);
var freestyleDynamicSnippets = extractHbsComponentSnippets(fs.readFileSync(filename, 'utf-8'), 'freestyle-dynamic', self.ui);
var freestyleNoteSnippets = extractHbsComponentSnippets(fs.readFileSync(filename, 'utf-8'), 'freestyle-note', self.ui);
var componentSnippets = naiveMerge(naiveMerge(freestyleUsageSnippets, freestyleDynamicSnippets), freestyleNoteSnippets);
var commentSnippets = extractCommentSnippets(fs.readFileSync(filename, 'utf-8'));
var snippets = naiveMerge(componentSnippets, commentSnippets);
for (var name in snippets) {
fs.writeFileSync(path.join(destDir, name)+path.extname(filename),
snippets[name]);
}
build() {
return findFiles(this.inputPaths[0]).then((files) => {
files.forEach((filename) => {
let freestyleUsageSnippets = extractHbsComponentSnippets(fs.readFileSync(filename, 'utf-8'), 'freestyle-usage', this.ui);
let freestyleDynamicSnippets = extractHbsComponentSnippets(fs.readFileSync(filename, 'utf-8'), 'freestyle-dynamic', this.ui);
let freestyleNoteSnippets = extractHbsComponentSnippets(fs.readFileSync(filename, 'utf-8'), 'freestyle-note', this.ui);
let componentSnippets = naiveMerge(naiveMerge(freestyleUsageSnippets, freestyleDynamicSnippets), freestyleNoteSnippets);
let commentSnippets = extractCommentSnippets(fs.readFileSync(filename, 'utf-8'));
let snippets = naiveMerge(componentSnippets, commentSnippets);
for (var name in snippets) {
fs.writeFileSync(path.join(this.outputPath, name)+path.extname(filename),
snippets[name]);
}
});
});
});
}
};

module.exports = SnippetFinder;
34 changes: 15 additions & 19 deletions index.js
@@ -1,22 +1,18 @@
'use strict';
var mergeTrees = require('broccoli-merge-trees');
var fs = require('fs');
var flatiron = require('broccoli-flatiron');
var freestyleUsageSnippetFinder = require('./freestyle-usage-snippet-finder');
const mergeTrees = require('broccoli-merge-trees');
const fs = require('fs');
const flatiron = require('broccoli-flatiron');
const FreestyleUsageSnippetFinder = require('./freestyle-usage-snippet-finder');

module.exports = {
name: 'ember-freestyle',

treeForApp: function(tree) {
var treesToMerge = [tree];
var self = this;
treeForApp(tree) {
let treesToMerge = [tree];
let snippets = mergeTrees(this.snippetPaths().filter((path) => fs.existsSync(path)));

var snippets = mergeTrees(this.snippetPaths().filter(function(path) {
return fs.existsSync(path);
}));

snippets = mergeTrees(this.snippetSearchPaths().map(function(path) {
return freestyleUsageSnippetFinder(path, self.ui);
snippets = mergeTrees(this.snippetSearchPaths().map((path) => {
return new FreestyleUsageSnippetFinder([path], this.ui);
}).concat(snippets));

snippets = flatiron(snippets, {
Expand All @@ -27,27 +23,27 @@ module.exports = {
return mergeTrees(treesToMerge);
},

snippetPaths: function() {
snippetPaths() {
if (this.app) {
var freestyleOptions = this.app.options.freestyle || {};
let freestyleOptions = this.app.options.freestyle || {};
return freestyleOptions.snippetPaths || ['snippets'];
}
return ['snippets'];
},

snippetSearchPaths: function() {
snippetSearchPaths() {
if (this.app) {
var freestyleOptions = this.app.options.freestyle || {};
let freestyleOptions = this.app.options.freestyle || {};
return freestyleOptions.snippetSearchPaths || ['app'];
}
return ['app'];
},

included: function(/*app, parentAddon*/) {
included(/*app, parentAddon*/) {
this._super.included.apply(this, arguments);
},

isDevelopingAddon: function() {
isDevelopingAddon() {
return false;
}
};
7 changes: 3 additions & 4 deletions package.json
Expand Up @@ -20,15 +20,14 @@
"deploy": "ember github-pages:commit --message \"Deploy gh-pages from commit $(git rev-parse HEAD)\"; git push; git checkout -"
},
"dependencies": {
"broccoli-flatiron": "0.1.2",
"broccoli-merge-trees": "^2.0.0",
"broccoli-writer": "^0.1.1",
"broccoli-flatiron": "0.1.3",
"broccoli-merge-trees": "^3.0.1",
"ember-cli-babel": "^6.6.0",
"ember-cli-htmlbars": "^2.0.3",
"ember-cli-sass": "^6.1.3",
"ember-cli-showdown": "^4.1.0",
"ember-runtime-enumerable-includes-polyfill": "^2.0.0",
"glob": "^7.1.1"
"glob": "^7.1.3"
},
"devDependencies": {
"broccoli-asset-rev": "^2.4.5",
Expand Down
70 changes: 60 additions & 10 deletions yarn.lock
Expand Up @@ -1187,14 +1187,12 @@ broccoli-filter@^1.2.2, broccoli-filter@^1.2.3:
symlink-or-copy "^1.0.1"
walk-sync "^0.3.1"

broccoli-flatiron@0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/broccoli-flatiron/-/broccoli-flatiron-0.1.2.tgz#088cf6f03cee71721a925df9bb12cabf07e6b65c"
broccoli-flatiron@0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/broccoli-flatiron/-/broccoli-flatiron-0.1.3.tgz#fc7bd8faf7db429ed7199933aa2ec7ef84a8d943"
dependencies:
broccoli-kitchen-sink-helpers "~0.2.4"
broccoli-writer "~0.1.1"
mkdirp "^0.3.5"
rsvp "~3.0.6"
broccoli-plugin "^1.3.0"
mkdirp "^0.5.1"

broccoli-funnel-reducer@^1.0.0:
version "1.0.0"
Expand Down Expand Up @@ -1237,7 +1235,7 @@ broccoli-funnel@^2.0.0, broccoli-funnel@^2.0.1:
symlink-or-copy "^1.0.0"
walk-sync "^0.3.1"

broccoli-kitchen-sink-helpers@^0.2.5, broccoli-kitchen-sink-helpers@~0.2.0, broccoli-kitchen-sink-helpers@~0.2.4:
broccoli-kitchen-sink-helpers@^0.2.5, broccoli-kitchen-sink-helpers@~0.2.0:
version "0.2.9"
resolved "https://registry.yarnpkg.com/broccoli-kitchen-sink-helpers/-/broccoli-kitchen-sink-helpers-0.2.9.tgz#a5e0986ed8d76fb5984b68c3f0450d3a96e36ecc"
dependencies:
Expand Down Expand Up @@ -1283,6 +1281,13 @@ broccoli-merge-trees@^2.0.0:
broccoli-plugin "^1.3.0"
merge-trees "^1.0.1"

broccoli-merge-trees@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/broccoli-merge-trees/-/broccoli-merge-trees-3.0.1.tgz#545dfe9f695cec43372b3ee7e63c7203713ea554"
dependencies:
broccoli-plugin "^1.3.0"
merge-trees "^2.0.0"

broccoli-middleware@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/broccoli-middleware/-/broccoli-middleware-1.0.0.tgz#92f4e1fb9a791ea986245a7077f35cc648dab097"
Expand Down Expand Up @@ -1408,7 +1413,7 @@ broccoli-uglify-sourcemap@^2.0.0:
uglify-es "^3.1.3"
walk-sync "^0.3.2"

broccoli-writer@^0.1.1, broccoli-writer@~0.1.1:
broccoli-writer@~0.1.1:
version "0.1.1"
resolved "https://registry.yarnpkg.com/broccoli-writer/-/broccoli-writer-0.1.1.tgz#d4d71aa8f2afbc67a3866b91a2da79084b96ab2d"
dependencies:
Expand Down Expand Up @@ -1640,6 +1645,10 @@ clean-css@^3.4.5:
commander "2.8.x"
source-map "0.4.x"

clean-up-path@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/clean-up-path/-/clean-up-path-1.0.0.tgz#de9e8196519912e749c9eaf67c13d64fac72a3e5"

cli-cursor@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-1.0.2.tgz#64da3f7d56a54412e59794bd62dc35295e8f2987"
Expand Down Expand Up @@ -3460,6 +3469,16 @@ fs-tree-diff@^0.5.2, fs-tree-diff@^0.5.3, fs-tree-diff@^0.5.4, fs-tree-diff@^0.5
path-posix "^1.0.0"
symlink-or-copy "^1.1.8"

fs-updater@^1.0.4:
version "1.0.4"
resolved "https://registry.yarnpkg.com/fs-updater/-/fs-updater-1.0.4.tgz#2329980f99ae9176e9a0e84f7637538a182ce63b"
dependencies:
can-symlink "^1.0.0"
clean-up-path "^1.0.0"
heimdalljs "^0.2.5"
heimdalljs-logger "^0.1.9"
rimraf "^2.6.2"

fs-vacuum@~1.2.7:
version "1.2.10"
resolved "https://registry.yarnpkg.com/fs-vacuum/-/fs-vacuum-1.2.10.tgz#b7629bec07a4031a2548fdf99f5ecf1cc8b31e36"
Expand Down Expand Up @@ -3651,6 +3670,17 @@ glob@^7.0.0, glob@^7.0.3, glob@^7.0.4, glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, gl
once "^1.3.0"
path-is-absolute "^1.0.0"

glob@^7.1.3:
version "7.1.3"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.0.4"
once "^1.3.0"
path-is-absolute "^1.0.0"

global-modules@^0.2.3:
version "0.2.3"
resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d"
Expand Down Expand Up @@ -3879,12 +3909,25 @@ heimdalljs-logger@^0.1.7:
debug "^2.2.0"
heimdalljs "^0.2.0"

heimdalljs-logger@^0.1.9:
version "0.1.10"
resolved "https://registry.yarnpkg.com/heimdalljs-logger/-/heimdalljs-logger-0.1.10.tgz#90cad58aabb1590a3c7e640ddc6a4cd3a43faaf7"
dependencies:
debug "^2.2.0"
heimdalljs "^0.2.6"

heimdalljs@^0.2.0, heimdalljs@^0.2.1, heimdalljs@^0.2.3:
version "0.2.5"
resolved "https://registry.yarnpkg.com/heimdalljs/-/heimdalljs-0.2.5.tgz#6aa54308eee793b642cff9cf94781445f37730ac"
dependencies:
rsvp "~3.2.1"

heimdalljs@^0.2.5, heimdalljs@^0.2.6:
version "0.2.6"
resolved "https://registry.yarnpkg.com/heimdalljs/-/heimdalljs-0.2.6.tgz#b0eebabc412813aeb9542f9cc622cb58dbdcd9fe"
dependencies:
rsvp "~3.2.1"

hoek@2.x.x:
version "2.16.3"
resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
Expand Down Expand Up @@ -5212,6 +5255,13 @@ merge-trees@^1.0.1:
rimraf "^2.4.3"
symlink-or-copy "^1.0.0"

merge-trees@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/merge-trees/-/merge-trees-2.0.0.tgz#a560d796e566c5d9b2c40472a2967cca48d85161"
dependencies:
fs-updater "^1.0.4"
heimdalljs "^0.2.5"

merge@^1.1.3, merge@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/merge/-/merge-1.2.0.tgz#7531e39d4949c281a66b8c5a6e0265e8b05894da"
Expand Down Expand Up @@ -6643,7 +6693,7 @@ right-align@^0.1.1:
dependencies:
align-text "^0.1.1"

rimraf@2, rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.3.4, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1:
rimraf@2, rimraf@^2.2.8, rimraf@^2.3.2, rimraf@^2.3.4, rimraf@^2.4.3, rimraf@^2.4.4, rimraf@^2.5.1, rimraf@^2.5.2, rimraf@^2.5.3, rimraf@^2.5.4, rimraf@^2.6.1, rimraf@^2.6.2:
version "2.6.2"
resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
dependencies:
Expand Down

0 comments on commit 0e531f3

Please sign in to comment.