diff options
author | Samy Pessé <samypesse@gmail.com> | 2014-04-13 23:53:34 +0200 |
---|---|---|
committer | Samy Pessé <samypesse@gmail.com> | 2014-04-13 23:53:34 +0200 |
commit | 3c7cae6262fdbc2dd3c9944661097d7cee60d9ce (patch) | |
tree | 07feb14f5f2d2ff90805a1cb929173c6c81fb5ff /bin/build.js | |
parent | 555c0d63ee905f9a258cccf164b58b1e1e1bd950 (diff) | |
download | gitbook-3c7cae6262fdbc2dd3c9944661097d7cee60d9ce.zip gitbook-3c7cae6262fdbc2dd3c9944661097d7cee60d9ce.tar.gz gitbook-3c7cae6262fdbc2dd3c9944661097d7cee60d9ce.tar.bz2 |
Move more build logic to the core generation module
Diffstat (limited to 'bin/build.js')
-rw-r--r-- | bin/build.js | 145 |
1 files changed, 46 insertions, 99 deletions
diff --git a/bin/build.js b/bin/build.js index 0384b77..4133d50 100644 --- a/bin/build.js +++ b/bin/build.js @@ -1,7 +1,6 @@ var path = require('path'); var Q = require('q'); var _ = require('lodash'); -var tmp = require('tmp'); var utils = require('./utils'); @@ -10,108 +9,56 @@ var parse = require("../lib/parse"); var fs = require('../lib/generate/fs'); var generators = require("../lib/generate").generators; -var buildFunc = function(dir, options) { - dir = dir || process.cwd(); - outputDir = options.output || path.join(dir, '_book'); +var makeBuildFunc = function(converter) { + return function(dir, options) { + dir = dir || process.cwd(); + outputDir = options.output - console.log('Starting build ...'); - // Get repo's URL - return utils.gitURL(dir) - .then(function(url) { - // Get ID of repo - return utils.githubID(url); - }, function(err) { - return null; - }) - .then(function(repoID) { - var title = options.title; - var githubID = options.github || repoID; + console.log('Starting build ...'); + // Get repo's URL + return utils.gitURL(dir) + .then(function(url) { + // Get ID of repo + return utils.githubID(url); + }, function(err) { + return null; + }) + .then(function(repoID) { + var title = options.title; + var githubID = options.github || repoID; - if (!title && !githubID) { - throw new Error('Needs either a title or a githubID (username/repo).\n'+ - ' If using github, either set repo origin to a github repo or use the -g flag.\n'+ - ' For title, use the -t flag.'); - } else if (!title) { - var parts = githubID.split('/', 2); - var user = parts[0], repo = parts[1]; + if (!title && !githubID) { + throw new Error('Needs either a title or a githubID (username/repo).\n'+ + ' If using github, either set repo origin to a github repo or use the -g flag.\n'+ + ' For title, use the -t flag.'); + } else if (!title) { + var parts = githubID.split('/', 2); + var user = parts[0], repo = parts[1]; - title = utils.titleCase(repo); - } + title = utils.titleCase(repo); + } - return generate.folder( - _.extend(options.options || {}, { - input: dir, - output: outputDir, - title: title, - description: options.intro, - github: githubID, - githubHost: options.githubHost, - generator: options.format, - theme: options.theme - }) - ); - }) - .then(function(output) { - console.log("Successfuly built !"); - return output; - }, utils.logError); -}; - -var buildFiles = function(dir, outputFile, options, masterOptions) { - var ext = masterOptions.extension; - - outputFile = outputFile || path.resolve(dir, "book."+ext); - - Q.nfcall(tmp.dir) - .then(function(tmpDir) { - return buildFunc( - dir, - _.extend(options, { - output: tmpDir, - format: masterOptions.format, - options: masterOptions.options - }) - ) - .then(function(_options) { - var copyPDF = function(lang) { - var _outputFile = outputFile; - var _tmpDir = tmpDir; - - if (lang) { - _outputFile = _outputFile.slice(0, -path.extname(_outputFile).length)+"_"+lang+path.extname(_outputFile); - _tmpDir = path.join(_tmpDir, lang); - } - - console.log("Generating in", _outputFile); - return fs.copy( - path.join(_tmpDir, "index."+ext), - _outputFile - ); - }; - - // Multi-langs book - return Q() - .then(function() { - if (_options.langsSummary) { - console.log("Generating for all the languages"); - return Q.all( - _.map(_options.langsSummary.list, function(lang) { - return copyPDF(lang.lang); - }) - ); - } else { - return copyPDF(); - } - }) - .then(function() { - return fs.remove(tmpDir); - }) - .fail(utils.logError); - }); - }) -}; + return converter( + _.extend(options || {}, { + input: dir, + output: outputDir, + title: title, + description: options.intro, + github: githubID, + githubHost: options.githubHost, + generator: options.format, + theme: options.theme + }) + ); + }) + .then(function(output) { + console.log("Successfuly built !"); + return output; + }, utils.logError); + }; +} module.exports = { - folder: buildFunc, - files: buildFiles + folder: makeBuildFunc(generate.folder), + file: makeBuildFunc(generate.file) }; |