index.js 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. var TerminalRenderer = require('marked-terminal');
  2. var marked = require('marked');
  3. var path = require('path');
  4. var fs = require('fs');
  5. var argv = process.argv;
  6. var DEFAULT_FILENAME = 'usage.md';
  7. var possibleFile = path.join(path.dirname(argv[1]), DEFAULT_FILENAME);
  8. marked.setOptions({
  9. // Define custom renderer
  10. renderer: new TerminalRenderer()
  11. });
  12. module.exports = function (str) {
  13. if (!isHelp()) {
  14. return void 0;
  15. }
  16. console.log(get(str));
  17. process.exit(0);
  18. };
  19. module.exports.get = get;
  20. function get (str) {
  21. if (str && path.extname(str) === '.md') {
  22. return fromFile(path.resolve(path.dirname(argv[1]), str));
  23. }
  24. if (str) {
  25. return fromString(str);
  26. }
  27. if (fs.existsSync(possibleFile)) {
  28. return fromFile(possibleFile);
  29. }
  30. throw Error('Could not locate usage source. Need pass inn file or text, or have usage.md in same dir as CLI');
  31. }
  32. function fromFile (filename) {
  33. return marked(fs.readFileSync(filename).toString());
  34. }
  35. function fromString (text) {
  36. return marked(text);
  37. }
  38. function isHelp () {
  39. var without = argv.slice(2);
  40. return without.some(function (option) {
  41. return check(option, 'h') || check(option, 'help');
  42. });
  43. }
  44. function check (option, needle) {
  45. return option.indexOf('-' + needle) !== -1 || option.indexOf('--' + needle) !== -1;
  46. }