/* Copyright (c) 2013, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://yuilibrary.com/license/ */ var nopt = require('nopt'), chalk = require('chalk'), known = { production: Boolean, development: Boolean, json: Boolean, csv: Boolean, csvComponentPrefix: String, markdown: Boolean, out: require('path'), unknown: Boolean, onlyunknown: Boolean, version: Boolean, color: Boolean, start: String, help: Boolean, relativeLicensePath: Boolean, exclude: String, customPath: require('path'), customFormat: { }, files: require('path'), summary: Boolean, failOn: String, onlyAllow: String, direct: Boolean, packages: String, excludePackages: String, excludePrivatePackages: Boolean, }, shorts = { "v": ["--version"], "h": ["--help"] }; var raw = function(args) { return nopt(known, shorts, (args || process.argv)); }; /*istanbul ignore next */ var has = function(a) { var cooked = raw().argv.cooked, ret = false; cooked.forEach(function(o) { if ((o === '--' + a) || (o === '--no-' + a)) { ret = true; } }); return ret; }; var clean = function(args) { var parsed = raw(args); delete parsed.argv; return parsed; }; var setDefaults = function(parsed) { if (parsed === undefined) { parsed = clean(); } /*istanbul ignore else*/ if (parsed.color === undefined) { parsed.color = chalk.supportsColor; } if (parsed.json || parsed.markdown || parsed.csv) { parsed.color = false; } parsed.start = parsed.start || process.cwd(); parsed.relativeLicensePath = !!parsed.relativeLicensePath; if (parsed.direct) { parsed.direct = 0; } else { parsed.direct = Infinity; } return parsed; }; var parse = function(args) { var parsed = clean(args); return setDefaults(parsed); }; exports.defaults = setDefaults; exports.has = has; exports.raw = raw; exports.parse = parse; exports.shorts = shorts; exports.known = known;