index.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. module.exports = (function() {
  2. var __MODS__ = {};
  3. var __DEFINE__ = function(modId, func, req) { var m = { exports: {}, _tempexports: {} }; __MODS__[modId] = { status: 0, func: func, req: req, m: m }; };
  4. var __REQUIRE__ = function(modId, source) { if(!__MODS__[modId]) return require(source); if(!__MODS__[modId].status) { var m = __MODS__[modId].m; m._exports = m._tempexports; var desp = Object.getOwnPropertyDescriptor(m, "exports"); if (desp && desp.configurable) Object.defineProperty(m, "exports", { set: function (val) { if(typeof val === "object" && val !== m._exports) { m._exports.__proto__ = val.__proto__; Object.keys(val).forEach(function (k) { m._exports[k] = val[k]; }); } m._tempexports = val }, get: function () { return m._tempexports; } }); __MODS__[modId].status = 1; __MODS__[modId].func(__MODS__[modId].req, m, m.exports); } return __MODS__[modId].m.exports; };
  5. var __REQUIRE_WILDCARD__ = function(obj) { if(obj && obj.__esModule) { return obj; } else { var newObj = {}; if(obj != null) { for(var k in obj) { if (Object.prototype.hasOwnProperty.call(obj, k)) newObj[k] = obj[k]; } } newObj.default = obj; return newObj; } };
  6. var __REQUIRE_DEFAULT__ = function(obj) { return obj && obj.__esModule ? obj.default : obj; };
  7. __DEFINE__(1682324647475, function(require, module, exports) {
  8. const fs = require('fs')
  9. const { PassThrough, pipeline } = require('readable-stream')
  10. const glob = require('glob')
  11. const defaults = {
  12. ext: '.txt',
  13. help: 'help'
  14. }
  15. function isDirectory (path) {
  16. try {
  17. const stat = fs.lstatSync(path)
  18. return stat.isDirectory()
  19. } catch (err) {
  20. return false
  21. }
  22. }
  23. function helpMe (opts) {
  24. opts = Object.assign({}, defaults, opts)
  25. if (!opts.dir) {
  26. throw new Error('missing dir')
  27. }
  28. if (!isDirectory(opts.dir)) {
  29. throw new Error(`${opts.dir} is not a directory`)
  30. }
  31. return {
  32. createStream: createStream,
  33. toStdout: toStdout
  34. }
  35. function createStream (args) {
  36. if (typeof args === 'string') {
  37. args = args.split(' ')
  38. } else if (!args || args.length === 0) {
  39. args = [opts.help]
  40. }
  41. const out = new PassThrough()
  42. const re = new RegExp(args.map(function (arg) {
  43. return arg + '[a-zA-Z0-9]*'
  44. }).join('[ /]+'))
  45. glob(opts.dir + '/**/*' + opts.ext, function (err, files) {
  46. if (err) return out.emit('error', err)
  47. files = files.map(function (path) {
  48. const relative = path.replace(opts.dir, '').replace(/^\//, '')
  49. return { path, relative }
  50. }).filter(function (file) {
  51. return file.relative.match(re)
  52. })
  53. if (files.length === 0) {
  54. return out.emit('error', new Error('no such help file'))
  55. } else if (files.length > 1) {
  56. const exactMatch = files.find((file) => file.relative === `${args[0]}${opts.ext}`)
  57. if (!exactMatch) {
  58. out.write('There are ' + files.length + ' help pages ')
  59. out.write('that matches the given request, please disambiguate:\n')
  60. files.forEach(function (file) {
  61. out.write(' * ')
  62. out.write(file.relative.replace(opts.ext, ''))
  63. out.write('\n')
  64. })
  65. out.end()
  66. return
  67. }
  68. files = [exactMatch]
  69. }
  70. pipeline(fs.createReadStream(files[0].path), out, () => {})
  71. })
  72. return out
  73. }
  74. function toStdout (args) {
  75. createStream(args)
  76. .on('error', function () {
  77. console.log('no such help file\n')
  78. toStdout()
  79. })
  80. .pipe(process.stdout)
  81. }
  82. }
  83. module.exports = helpMe
  84. }, function(modId) {var map = {}; return __REQUIRE__(map[modId], modId); })
  85. return __REQUIRE__(1682324647475);
  86. })()
  87. //miniprogram-npm-outsideDeps=["fs","readable-stream","glob"]
  88. //# sourceMappingURL=index.js.map