index.js 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. // @ts-check
  2. "use strict";
  3. Object.defineProperty(exports, "__esModule", {
  4. value: true
  5. });
  6. Object.defineProperty(exports, "help", {
  7. enumerable: true,
  8. get: ()=>help
  9. });
  10. const _packageJson = /*#__PURE__*/ _interopRequireDefault(require("../../../package.json"));
  11. function _interopRequireDefault(obj) {
  12. return obj && obj.__esModule ? obj : {
  13. default: obj
  14. };
  15. }
  16. function help({ message , usage , commands , options }) {
  17. let indent = 2;
  18. // Render header
  19. console.log();
  20. console.log(`${_packageJson.default.name} v${_packageJson.default.version}`);
  21. // Render message
  22. if (message) {
  23. console.log();
  24. for (let msg of message.split("\n")){
  25. console.log(msg);
  26. }
  27. }
  28. // Render usage
  29. if (usage && usage.length > 0) {
  30. console.log();
  31. console.log("Usage:");
  32. for (let example of usage){
  33. console.log(" ".repeat(indent), example);
  34. }
  35. }
  36. // Render commands
  37. if (commands && commands.length > 0) {
  38. console.log();
  39. console.log("Commands:");
  40. for (let command of commands){
  41. console.log(" ".repeat(indent), command);
  42. }
  43. }
  44. // Render options
  45. if (options) {
  46. let groupedOptions = {};
  47. for (let [key, value] of Object.entries(options)){
  48. if (typeof value === "object") {
  49. groupedOptions[key] = {
  50. ...value,
  51. flags: [
  52. key
  53. ]
  54. };
  55. } else {
  56. groupedOptions[value].flags.push(key);
  57. }
  58. }
  59. console.log();
  60. console.log("Options:");
  61. for (let { flags , description , deprecated } of Object.values(groupedOptions)){
  62. if (deprecated) continue;
  63. if (flags.length === 1) {
  64. console.log(" ".repeat(indent + 4 /* 4 = "-i, ".length */ ), flags.slice().reverse().join(", ").padEnd(20, " "), description);
  65. } else {
  66. console.log(" ".repeat(indent), flags.slice().reverse().join(", ").padEnd(24, " "), description);
  67. }
  68. }
  69. }
  70. console.log();
  71. }