UNPKG

frankendoc

Version:

bringing documents alive

85 lines (63 loc) 1.89 kB
fs = require 'fs' path = require 'path' _ = require 'underscore' { defaults } = require '../settings' argv = {} @read = -> global.settings = {} read_argv() merge settings, defaults set_root_folder() merge_user_settings() merge settings, argv ### # Command line ### read_argv = -> usage = ''' Usage: frank [docs] [options] Docs: [docs.root\\[docs.type]] shortcut to set root & type properties in settings.docs --docs.root docs root folder [.] --docs.type extension of doc files [*.txt] Options: these become settings properties -h, --help output usage information -r, --report <name> select report output [console] -o, --only <pattern> only run docs matching <pattern> ''' argv = require('optimist') .alias('h', 'help') .alias('r', 'report') .alias('o', 'only') .argv if argv.help? console.log usage process.exit() ### # Root Folder ### set_root_folder = -> return unless argv._.length settings.docs.root = argv._[0] ext = path.extname settings.docs.root if ext.length settings.docs.root = path.dirname settings.docs.root settings.docs.type = ext settings.code.root = settings.docs.root ### # User settings ### merge_user_settings = -> return unless has_user_settings() merge settings, user_settings() user_settings_file = -> path.resolve settings.docs.root, 'settings.coffee' has_user_settings = -> fs.existsSync user_settings_file() user_settings = -> require(user_settings_file()).settings merge = (one, another) -> for property, value of another if is_object(value) and is_object(one[property]) merge one[property], value else one[property] = value is_object = (o) -> toString.call(o) is '[object Object]'