cli.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. var mout = require('mout');
  2. var nopt = require('nopt');
  3. var renderers = require('../renderers');
  4. function readOptions(options, argv) {
  5. var types;
  6. var noptOptions;
  7. var parsedOptions = {};
  8. var shorthands = {};
  9. if (Array.isArray(options)) {
  10. argv = options;
  11. options = {};
  12. } else {
  13. options = options || {};
  14. }
  15. types = mout.object.map(options, function (option) {
  16. return option.type;
  17. });
  18. mout.object.forOwn(options, function (option, name) {
  19. shorthands[option.shorthand] = '--' + name;
  20. });
  21. noptOptions = nopt(types, shorthands, argv);
  22. // Filter only the specified options because nopt parses every --
  23. // Also make them camel case
  24. mout.object.forOwn(noptOptions, function (value, key) {
  25. if (options[key]) {
  26. parsedOptions[mout.string.camelCase(key)] = value;
  27. }
  28. });
  29. parsedOptions.argv = noptOptions.argv;
  30. return parsedOptions;
  31. }
  32. function getRenderer(command, json, config) {
  33. if (config.json || json) {
  34. return new renderers.Json(command, config);
  35. }
  36. return new renderers.Standard(command, config);
  37. }
  38. module.exports.readOptions = readOptions;
  39. module.exports.getRenderer = getRenderer;