aboutsummaryrefslogtreecommitdiffstats
path: root/docs/src/writer.js
diff options
context:
space:
mode:
Diffstat (limited to 'docs/src/writer.js')
-rw-r--r--docs/src/writer.js50
1 files changed, 32 insertions, 18 deletions
diff --git a/docs/src/writer.js b/docs/src/writer.js
index e99ad73e..6ca1dbab 100644
--- a/docs/src/writer.js
+++ b/docs/src/writer.js
@@ -4,7 +4,7 @@
*/
var qfs = require('q-fs');
var Q = require('qq');
-var OUTPUT_DIR = "build/docs/";
+var OUTPUT_DIR = 'build/docs/';
var fs = require('fs');
exports.output = output;
@@ -17,29 +17,27 @@ function output(file, content) {
};
//recursively create directory
-exports.makeDir = function(path) {
- var parts = path.split(/\//);
+exports.makeDir = function(p) {
+ var parts = p.split(/\//);
var path = ".";
- //Sequentially create directories
- var done = Q.defer();
- (function createPart() {
- if(!parts.length) {
- done.resolve();
- } else {
- path += "/" + parts.shift();
- qfs.isDirectory(path).then(function(isDir) {
- if(!isDir) {
- qfs.makeDirectory(path);
+ // Recursively rebuild directory structure
+ return qfs.exists(p).
+ then(function createPart(exists) {
+ if(!exists && parts.length) {
+ path += "/" + parts.shift();
+ return qfs.exists(path).then(function(exists) {
+ if (!exists) {
+ return qfs.makeDirectory(path).then(createPart, createPart);
+ } else {
+ return createPart();
+ }
+ });
}
- createPart();
});
- }
- })();
- return done.promise;
};
-exports.copyTpl = function(filename) {
+exports.copyTemplate = function(filename) {
return exports.copy('docs/src/templates/' + filename, filename);
};
@@ -59,8 +57,23 @@ exports.copy = function(from, to, transform) {
}
return output(to, content);
});
+};
+
+
+exports.symlinkTemplate= symlinkTemplate;
+function symlinkTemplate(filename) {
+ var dest = OUTPUT_DIR + filename,
+ dirDepth = dest.split('/').length,
+ src = Array(dirDepth).join('../') + 'docs/src/templates/' + filename;
+
+ return qfs.exists(dest).then(function(exists) {
+ if (!exists) {
+ qfs.symbolicLink(dest, src);
+ }
+ });
}
+
/* Replace placeholders in content accordingly
* @param content{string} content to be modified
* @param replacements{obj} key and value pairs in which key will be replaced with value in content
@@ -132,3 +145,4 @@ exports.toString = function toString(obj) {
function noop() {};
+