UNPKG

ninjs-lodash

Version:
73 lines (59 loc) 3.18 kB
'use strict' const _ = require('lodash') const path = require('path') const xjargv = require('./jargv') module.exports = jav _.mixin({ jav: jav }) // node pad modules.publish -v --version -h -? --help -H --usage -s --silent --loglevel=info -q -d -dd -ddd // node pad ams.modules.publish -v --version -h -? --help -H --usage -s --silent --loglevel=info -q -d -dd -ddd function jav() { let jargv = _.jargv() let jargs = jargv ? _.get(jargv, '_') || [] : [] let sw = jargv ? _.omit(jargv, '_') || {} : {} let exe_path = jargv ? _.get(jargv, '_[0]') : '' let exe_name = exe_path ? path.parse(exe_path).name : '' let exe_base = exe_path ? path.parse(exe_path).base : '' let isLocal = exe_name === 'node' let cmd_path = isLocal ? _.get(jargv, '_[1]') || '' : exe_path let ns = isLocal ? _.get(jargv, '_[2]') || _.get(jargv, '_[1]') || '' : _.get(jargv, '_[1]') || '' // use path.base here for edge case -> snapptop ams.modules.blah // path.name would return ams.modules where path.base returns ams.modules.blah let cmd_name = cmd_path ? path.parse(cmd_path).base : '' let split = ns ? _.compact(ns.split(/\./g)) || [] : [] let api = isLocal ? '' : split.shift() || '' let model = split.shift() || '' let keys = _.compact(split || []) let key = _.join(keys, '.') keys.unshift(model) let keypath = _.join(_.compact(keys), '.') let logLevel = _.toLower(_.get(sw, 'loglevel') || '') let isHelp = _.get(sw, 'h') || _.get(sw, '?') || _.get(sw, 'help') || _.get(sw, 'H') || _.get(sw, 'usage') || false isHelp = isHelp ? true : false return { "_": jargs, "exe": { "path": exe_path, "name": exe_name, "base": exe_base }, "cmd": { "path": cmd_path, "name": cmd_name }, "ns": { "path": ns, "keypath": keypath, "api": api, "model": model, "key": key, "keys": keys }, "args": isLocal ? _.drop(jargs, 3) : _.drop(jargs, 2), "sw": sw, "log_level": logLevel || 'silent', "is_local": isLocal, "is_help": isHelp, "is_version": _.get(sw, 'v') || _.get(sw, 'version') || false, // log levels -> from quietest to loudest "is_silent": _.get(sw, 's') || _.get(sw, 'silent') || logLevel === 'silent' || false, "is_quiet": _.get(sw, 'q') || _.get(sw, 'quiet') || logLevel === 'warn' || false, "is_info": _.get(sw, 'd') || logLevel === 'info' || false, "is_verbose": _.get(sw, 'dd') || _.get(sw, 'verbose') || logLevel === 'verbose' || false, "is_silly": _.get(sw, 'ddd') || logLevel === 'silly' || false, "is_global": _.get(sw, 'g') || _.get(sw, 'global') || false, "is_prefix": _.get(sw, 'C') || _.get(sw, 'prefix') || false, "is_long": _.get(sw, 'l') || _.get(sw, 'long') || false, "is_message": _.get(sw, 'm') || _.get(sw, 'message') || false, "is_parseable": _.get(sw, 'p') || _.get(sw, 'porcelain') || _.get(sw, 'parseable') || false, "is_registry": _.get(sw, 'reg') || _.get(sw, 'registry') || false, "is_force": _.get(sw, 'f') || _.get(sw, 'force') || false, "is_yes": _.get(sw, 'y') || _.get(sw, 'yes') || false, "is_no": _.get(sw, 'n') || _.get(sw, 'no') || false } }