@code-pushup/cli 0.56.0 → 0.57.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/package.json +10 -9
  2. package/src/index.js +6 -0
  3. package/src/index.js.map +1 -0
  4. package/src/lib/autorun/autorun-command.js +43 -0
  5. package/src/lib/autorun/autorun-command.js.map +1 -0
  6. package/src/lib/cli.js +40 -0
  7. package/src/lib/cli.js.map +1 -0
  8. package/src/lib/collect/collect-command.js +38 -0
  9. package/src/lib/collect/collect-command.js.map +1 -0
  10. package/src/lib/commands.js +21 -0
  11. package/src/lib/commands.js.map +1 -0
  12. package/src/lib/compare/compare-command.d.ts +1 -1
  13. package/src/lib/compare/compare-command.js +24 -0
  14. package/src/lib/compare/compare-command.js.map +1 -0
  15. package/src/lib/constants.js +3 -0
  16. package/src/lib/constants.js.map +1 -0
  17. package/src/lib/history/history-command.js +50 -0
  18. package/src/lib/history/history-command.js.map +1 -0
  19. package/src/lib/history/history.model.js +2 -0
  20. package/src/lib/history/history.model.js.map +1 -0
  21. package/src/lib/history/history.options.d.ts +1 -1
  22. package/src/lib/history/history.options.js +41 -0
  23. package/src/lib/history/history.options.js.map +1 -0
  24. package/src/lib/history/utils.d.ts +1 -1
  25. package/src/lib/history/utils.js +27 -0
  26. package/src/lib/history/utils.js.map +1 -0
  27. package/src/lib/implementation/compare.model.js +2 -0
  28. package/src/lib/implementation/compare.model.js.map +1 -0
  29. package/src/lib/implementation/compare.options.d.ts +1 -1
  30. package/src/lib/implementation/compare.options.js +19 -0
  31. package/src/lib/implementation/compare.options.js.map +1 -0
  32. package/src/lib/implementation/core-config.middleware.d.ts +3 -3
  33. package/src/lib/implementation/core-config.middleware.js +31 -0
  34. package/src/lib/implementation/core-config.middleware.js.map +1 -0
  35. package/src/lib/implementation/core-config.model.js +2 -0
  36. package/src/lib/implementation/core-config.model.js.map +1 -0
  37. package/src/lib/implementation/core-config.options.d.ts +1 -1
  38. package/src/lib/implementation/core-config.options.js +43 -0
  39. package/src/lib/implementation/core-config.options.js.map +1 -0
  40. package/src/lib/implementation/filter.middleware.d.ts +1 -1
  41. package/src/lib/implementation/filter.middleware.js +61 -0
  42. package/src/lib/implementation/filter.middleware.js.map +1 -0
  43. package/src/lib/implementation/filter.model.js +2 -0
  44. package/src/lib/implementation/filter.model.js.map +1 -0
  45. package/src/lib/implementation/filter.options.d.ts +1 -1
  46. package/src/lib/implementation/filter.options.js +36 -0
  47. package/src/lib/implementation/filter.options.js.map +1 -0
  48. package/src/lib/implementation/formatting.js +26 -0
  49. package/src/lib/implementation/formatting.js.map +1 -0
  50. package/src/lib/implementation/global.model.d.ts +1 -1
  51. package/src/lib/implementation/global.model.js +2 -0
  52. package/src/lib/implementation/global.model.js.map +1 -0
  53. package/src/lib/implementation/global.options.d.ts +1 -1
  54. package/src/lib/implementation/global.options.js +23 -0
  55. package/src/lib/implementation/global.options.js.map +1 -0
  56. package/src/lib/implementation/global.utils.js +45 -0
  57. package/src/lib/implementation/global.utils.js.map +1 -0
  58. package/src/lib/implementation/logging.js +24 -0
  59. package/src/lib/implementation/logging.js.map +1 -0
  60. package/src/lib/implementation/merge-diffs.model.js +2 -0
  61. package/src/lib/implementation/merge-diffs.model.js.map +1 -0
  62. package/src/lib/implementation/merge-diffs.options.d.ts +1 -1
  63. package/src/lib/implementation/merge-diffs.options.js +10 -0
  64. package/src/lib/implementation/merge-diffs.options.js.map +1 -0
  65. package/src/lib/implementation/validate-filter-options.utils.d.ts +1 -1
  66. package/src/lib/implementation/validate-filter-options.utils.js +86 -0
  67. package/src/lib/implementation/validate-filter-options.utils.js.map +1 -0
  68. package/src/lib/merge-diffs/merge-diffs-command.js +22 -0
  69. package/src/lib/merge-diffs/merge-diffs-command.js.map +1 -0
  70. package/src/lib/middlewares.js +13 -0
  71. package/src/lib/middlewares.js.map +1 -0
  72. package/src/lib/options.d.ts +1 -1
  73. package/src/lib/options.js +17 -0
  74. package/src/lib/options.js.map +1 -0
  75. package/src/lib/print-config/print-config-command.js +17 -0
  76. package/src/lib/print-config/print-config-command.js.map +1 -0
  77. package/src/lib/upload/upload-command.js +26 -0
  78. package/src/lib/upload/upload-command.js.map +1 -0
  79. package/src/lib/yargs-cli.js +105 -0
  80. package/src/lib/yargs-cli.js.map +1 -0
  81. package/index.js +0 -4262
@@ -0,0 +1,105 @@
1
+ /* eslint-disable max-lines-per-function */
2
+ import { blue, dim, green } from 'ansis';
3
+ import { createRequire } from 'node:module';
4
+ import yargs, {} from 'yargs';
5
+ import { formatSchema } from '@code-pushup/models';
6
+ import { TERMINAL_WIDTH } from '@code-pushup/utils';
7
+ import { descriptionStyle, formatNestedValues, formatObjectValue, headerStyle, titleStyle, } from './implementation/formatting.js';
8
+ import { logErrorBeforeThrow } from './implementation/global.utils.js';
9
+ export const yargsDecorator = {
10
+ 'Commands:': `${green('Commands')}:`,
11
+ 'Options:': `${green('Options')}:`,
12
+ 'Examples:': `${green('Examples')}:`,
13
+ boolean: blue('boolean'),
14
+ count: blue('count'),
15
+ string: blue('string'),
16
+ array: blue('array'),
17
+ required: blue('required'),
18
+ 'default:': `${blue('default')}:`,
19
+ 'choices:': `${blue('choices')}:`,
20
+ 'aliases:': `${blue('aliases')}:`,
21
+ };
22
+ /**
23
+ * returns configurable yargs CLI for code-pushup
24
+ *
25
+ * @example
26
+ * yargsCli(hideBin(process.argv))
27
+ * // bootstrap CLI; format arguments
28
+ * .argv;
29
+ */
30
+ export function yargsCli(argv, cfg) {
31
+ const { usageMessage, scriptName, noExitProcess } = cfg;
32
+ const commands = cfg.commands ?? [];
33
+ const middlewares = cfg.middlewares ?? [];
34
+ const options = cfg.options ?? {};
35
+ const groups = cfg.groups ?? {};
36
+ const examples = cfg.examples ?? [];
37
+ const cli = yargs(argv);
38
+ const packageJson = createRequire(import.meta.url)('../../package.json');
39
+ // setup yargs
40
+ cli
41
+ .updateLocale(yargsDecorator)
42
+ // take minimum of TERMINAL_WIDTH or full width of the terminal
43
+ .wrap(Math.max(TERMINAL_WIDTH, cli.terminalWidth()))
44
+ .help('help', descriptionStyle('Show help'))
45
+ .alias('h', 'help')
46
+ .showHelpOnFail(false)
47
+ .version('version', dim `Show version`, packageJson.version)
48
+ .check(args => {
49
+ const persist = args['persist'];
50
+ return persist == null || validatePersistFormat(persist);
51
+ })
52
+ .parserConfiguration({
53
+ 'strip-dashed': true,
54
+ })
55
+ .coerce('config', (config) => Array.isArray(config) ? config.at(-1) : config)
56
+ .options(formatNestedValues(options, 'describe'));
57
+ // usage message
58
+ if (usageMessage) {
59
+ cli.usage(titleStyle(usageMessage));
60
+ }
61
+ // script name
62
+ if (scriptName) {
63
+ cli.scriptName(scriptName);
64
+ }
65
+ // add examples
66
+ examples.forEach(([exampleName, description]) => cli.example(exampleName, descriptionStyle(description)));
67
+ // add groups
68
+ Object.entries(groups).forEach(([groupName, optionNames]) => cli.group(optionNames, headerStyle(groupName)));
69
+ // add middlewares
70
+ middlewares.forEach(({ middlewareFunction, applyBeforeValidation }) => {
71
+ cli.middleware(logErrorBeforeThrow(middlewareFunction), applyBeforeValidation);
72
+ });
73
+ // add commands
74
+ commands.forEach(commandObj => {
75
+ cli.command(formatObjectValue({
76
+ ...commandObj,
77
+ handler: logErrorBeforeThrow(commandObj.handler),
78
+ ...(typeof commandObj.builder === 'function' && {
79
+ builder: logErrorBeforeThrow(commandObj.builder),
80
+ }),
81
+ }, 'describe'));
82
+ });
83
+ // this flag should be set for tests and debugging purposes
84
+ // when there is an error and exitProcess is called, it suppresses the error message
85
+ // more info here: https://yargs.js.org/docs/#api-reference-exitprocessenable
86
+ if (noExitProcess) {
87
+ cli.exitProcess(false);
88
+ }
89
+ // return CLI object
90
+ return cli;
91
+ }
92
+ function validatePersistFormat(persist) {
93
+ try {
94
+ if (persist.format != null) {
95
+ persist.format
96
+ .flatMap(format => format.split(','))
97
+ .forEach(format => formatSchema.parse(format));
98
+ }
99
+ return true;
100
+ }
101
+ catch {
102
+ throw new Error(`Invalid persist.format option. Valid options are: ${Object.values(formatSchema.Values).join(', ')}`);
103
+ }
104
+ }
105
+ //# sourceMappingURL=yargs-cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"yargs-cli.js","sourceRoot":"","sources":["../../../../../packages/cli/src/lib/yargs-cli.ts"],"names":[],"mappings":"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"}