nopt.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #!/usr/bin/env node
  2. var nopt = require('../lib/nopt')
  3. var path = require('path')
  4. var types = { num: Number,
  5. bool: Boolean,
  6. help: Boolean,
  7. list: Array,
  8. 'num-list': [Number, Array],
  9. 'str-list': [String, Array],
  10. 'bool-list': [Boolean, Array],
  11. str: String,
  12. clear: Boolean,
  13. config: Boolean,
  14. length: Number,
  15. file: path,
  16. }
  17. var shorthands = { s: ['--str', 'astring'],
  18. b: ['--bool'],
  19. nb: ['--no-bool'],
  20. tft: ['--bool-list', '--no-bool-list', '--bool-list', 'true'],
  21. '?': ['--help'],
  22. h: ['--help'],
  23. H: ['--help'],
  24. n: ['--num', '125'],
  25. c: ['--config'],
  26. l: ['--length'],
  27. f: ['--file'],
  28. }
  29. var parsed = nopt(types
  30. , shorthands
  31. , process.argv
  32. , 2)
  33. console.log('parsed', parsed)
  34. if (parsed.help) {
  35. console.log('')
  36. console.log('nopt cli tester')
  37. console.log('')
  38. console.log('types')
  39. console.log(Object.keys(types).map(function M (t) {
  40. var type = types[t]
  41. if (Array.isArray(type)) {
  42. return [t, type.map(function (mappedType) {
  43. return mappedType.name
  44. })]
  45. }
  46. return [t, type && type.name]
  47. }).reduce(function (s, i) {
  48. s[i[0]] = i[1]
  49. return s
  50. }, {}))
  51. console.log('')
  52. console.log('shorthands')
  53. console.log(shorthands)
  54. }