diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/cli/helper.js | 50 | ||||
-rw-r--r-- | lib/cli/index.js | 44 | ||||
-rw-r--r-- | lib/config/index.js | 2 | ||||
-rw-r--r-- | lib/index.js | 37 | ||||
-rw-r--r-- | lib/output/base.js | 2 |
5 files changed, 98 insertions, 37 deletions
diff --git a/lib/cli/helper.js b/lib/cli/helper.js new file mode 100644 index 0000000..67bc502 --- /dev/null +++ b/lib/cli/helper.js @@ -0,0 +1,50 @@ +var _ = require('lodash'); + +var Book = require('../book'); +var NodeFS = require('../fs/node'); +var Logger = require('../utils/logger'); + +var LOG_OPTION = { + name: 'log', + description: 'Minimum log level to display', + values: _.chain(Logger.LEVELS) + .keys() + .map(function(s) { + return s.toLowerCase(); + }) + .value(), + defaults: 'info' +}; + +// Commands which is processing a book +// the root of the book is the first argument (or current directory) +function bookCmd(fn) { + return function(args, kwargs) { + + var input = args[0] || process.cwd(); + var book = new Book({ + fs: new NodeFS(), + root: input, + + logLevel: kwargs.log + }); + + return fn(book, args.slice(1)); + }; +} + +// Commands which is working on a Output instance +function outputCmd(Out, fn) { + return bookCmd(function(book, args) { + return fn(new Out(book), args); + }); +} + +module.exports = { + bookCmd: bookCmd, + outputCmd: outputCmd, + + options: { + log: LOG_OPTION + } +}; diff --git a/lib/cli/index.js b/lib/cli/index.js new file mode 100644 index 0000000..d67b78a --- /dev/null +++ b/lib/cli/index.js @@ -0,0 +1,44 @@ +var Output = require('../output/base'); +var helper = require('./helper'); + +module.exports = { + commands: [ + + { + name: 'parse [book]', + description: 'parse and returns debug information for a book', + options: [ + helper.options.log + ], + exec: helper.bookCmd(function(book) { + return book.parse() + .then(function() { + book.log.info.ln(''); + + if (book.config.exists()) book.log.info.ln('Configuration:', book.config.path); + + if (book.isMultilingual()) { + book.log.info.ln('Multilingual book detected:', book.langs.path); + } else { + book.log.info.ln('Readme:', book.readme.path); + book.log.info.ln('Summary:', book.summary.path); + if (book.glossary.exists()) book.log.info.ln('Glossary:', book.glossary.path); + } + }); + }) + }, + + { + name: 'install [book]', + description: 'install all plugins dependencies', + options: [ + helper.options.log + ], + exec: helper.outputCmd(Output, function(output, args) { + + }) + } + + + ] +}; diff --git a/lib/config/index.js b/lib/config/index.js index d83dae4..801dca1 100644 --- a/lib/config/index.js +++ b/lib/config/index.js @@ -19,7 +19,7 @@ function Config(book, baseConfig) { this.book = book; this.fs = book.fs; this.log = book.log; - this.path = null; + this.path = ''; this.replace(baseConfig || {}); } diff --git a/lib/index.js b/lib/index.js index e0d43eb..fdad6ee 100644 --- a/lib/index.js +++ b/lib/index.js @@ -1,40 +1,7 @@ var Book = require('./book'); -var Output = require('./output'); -var NodeFS = require('./fs/node'); - -// Setup a Book for the arguments -function setupBook(args) { - var input = args[0] || process.cwd(); - return new Book({ - fs: new NodeFS(), - root: input - }); -} - -// Setup an Output for the arguments -function setupOutput(Out, args) { - return new Out(setupBook(args)); -} +var cli = require('./cli'); module.exports = { Book: Book, - commands: [ - { - name: 'install [book]', - description: 'install all plugins dependencies', - exec: function(args) { - var book = setupBook(args); - - return book.config.load() - .then(function() { - return book.plugins.install(); - }) - .then(function(){ - console.log(''); - console.log(color.green('Done, without error')); - }); - } - }, - - ] + commands: cli.commands }; diff --git a/lib/output/base.js b/lib/output/base.js index ce0a9c6..193f636 100644 --- a/lib/output/base.js +++ b/lib/output/base.js @@ -20,7 +20,7 @@ function Output(book) { this.log = this.book.log; // Create plugins manager - this.plugins = new PluginsManager(book); + this.plugins = new PluginsManager(this); // Create template engine this.template = new TemplateEngine(this); |