diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/api/encodeConfig.js | 6 | ||||
-rw-r--r-- | lib/api/encodeGlobal.js | 44 | ||||
-rw-r--r-- | lib/models/output.js | 16 |
3 files changed, 59 insertions, 7 deletions
diff --git a/lib/api/encodeConfig.js b/lib/api/encodeConfig.js index d83f81a..2a05528 100644 --- a/lib/api/encodeConfig.js +++ b/lib/api/encodeConfig.js @@ -24,6 +24,12 @@ function encodeConfig(output, config) { deprecate.field(output, 'config.options', result, 'options', result.values, '"config.options" property is deprecated, use "config.get(key)" instead'); + deprecate.field(output, 'config.options.generator', result.values, 'generator', + output.getGenerator(), '"options.generator" property is deprecated, use "output.name" instead'); + + deprecate.field(output, 'config.options.generator', result.values, 'output', + output.getRoot(), '"options.output" property is deprecated, use "output.root()" instead'); + return result; } diff --git a/lib/api/encodeGlobal.js b/lib/api/encodeGlobal.js index 0e0f82c..915350c 100644 --- a/lib/api/encodeGlobal.js +++ b/lib/api/encodeGlobal.js @@ -1,6 +1,6 @@ -var path = require('path'); - var fs = require('../utils/fs'); +var Promise = require('../utils/promise'); +var PathUtils = require('../utils/promise'); var deprecate = require('./deprecate'); var encodeConfig = require('./encodeConfig'); @@ -15,8 +15,7 @@ var encodeConfig = require('./encodeConfig'); function encodeGlobal(output) { var book = output.getBook(); var logger = output.getLogger(); - - var outputFolder = output.getOptions().get('root'); + var outputFolder = output.getRoot(); var result = { log: logger, @@ -24,15 +23,46 @@ function encodeGlobal(output) { }; result.output = { - name: 'website', + /** + Name of the generator being used + {String} + */ + name: output.getGenerator(), + + /** + Return absolute path to the root folder of output + @return {String} + */ + root: function() { + return outputFolder; + }, + /** + Convert a filepath into an url + @return {String} + */ toURL: function(s) { return s; }, + /** + Write a file to the output folder, + It creates the required folder + + @param {String} fileName + @param {Buffer} content + @return {Promise} + */ writeFile: function(fileName, content) { - var filePath = path.join(outputFolder, fileName); - return fs.writeFile(filePath, content); + return Promise() + .then(function() { + var filePath = PathUtils.resolveInRoot(outputFolder, fileName); + + return fs.ensure(filePath) + .then(function() { + return fs.writeFile(filePath, content); + }); + }); } }; diff --git a/lib/models/output.js b/lib/models/output.js index 10df67b..c11017e 100644 --- a/lib/models/output.js +++ b/lib/models/output.js @@ -5,6 +5,9 @@ var Book = require('./book'); var Output = Immutable.Record({ book: Book(), + // Name of the generator being used + generator: String(), + // Map of plugins to use (String -> Plugin) plugins: Immutable.OrderedMap(), @@ -25,6 +28,10 @@ Output.prototype.getBook = function() { return this.get('book'); }; +Output.prototype.getGenerator = function() { + return this.get('generator'); +}; + Output.prototype.getPlugins = function() { return this.get('plugins'); }; @@ -46,6 +53,15 @@ Output.prototype.getState = function() { }; /** + Get root folder for output + + @return {String} +*/ +Output.prototype.getRoot = function() { + return this.getOptions().get('root'); +}; + +/** Return logegr for this output (same as book) @return {Logger} |