Merge afb-client
[src/app-framework-demo.git] / afb-client / bower_components / foundation-apps / bin / gulp-dynamic-routing.js
diff --git a/afb-client/bower_components/foundation-apps/bin/gulp-dynamic-routing.js b/afb-client/bower_components/foundation-apps/bin/gulp-dynamic-routing.js
new file mode 100644 (file)
index 0000000..3dc5350
--- /dev/null
@@ -0,0 +1,56 @@
+var through     = require('through2');
+var gutil       = require('gulp-util');
+var fm          = require('front-matter');
+var PluginError = gutil.PluginError;
+var path        = require('path');
+var fs           = require('fs');
+
+module.exports = function(options) {
+  var configs = [];
+  var directory = options.dir || process.cwd();
+
+  function bufferContents(file, enc, cb) {
+    var config;
+    var content;
+
+    if(file.isNull()) return cb(null, file);
+
+    if(file.isBuffer()) {
+      try {
+        content = fm(String(file.contents));
+      } catch (e) {
+        return cb(new PluginError('Gulp Dynamic Routing', e));
+      }
+
+      if(content.attributes.name) {
+        file.contents = new Buffer(content.body);
+        config = content.attributes;
+        var relativePath = path.relative(directory + path.sep + options.root, file.path);
+        config.path = relativePath.split(path.sep).join('/');
+        configs.push(config);
+      }
+    }
+
+    this.push(file);
+
+    return cb();
+  }
+
+  function endStream(cb) {
+    var self = this;
+    var appPath = options.path;
+
+    configs.sort(function(a, b) {
+      return a.url < b.url;
+    });
+
+
+    fs.writeFile(appPath, 'var foundationRoutes = ' + JSON.stringify(configs) + '; \n', function(err) {
+      if(err) throw err;
+      cb();
+    });
+
+  }
+
+  return through.obj(bufferContents, endStream);
+};