Skip to content

Commit 149f54b

Browse files
authored
feat(cli): add skip and only category filters
1 parent 9d75682 commit 149f54b

23 files changed

+1049
-775
lines changed

e2e/cli-e2e/tests/__snapshots__/help.e2e.test.ts.snap

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,21 @@ Commands:
1818
1919
2020
Global Options:
21-
--progress Show progress bar in stdout.
21+
--progress Show progress bar in stdout.
2222
[boolean] [default: true]
23-
--verbose When true creates more verbose output. This is helpful when
24-
debugging. [boolean] [default: false]
25-
--config Path to config file. By default it loads code-pushup.config
26-
.(ts|mjs|js). [string]
27-
--tsconfig Path to a TypeScript config, to be used when loading config
28-
file. [string]
29-
-p, --onlyPlugins List of plugins to run. If not set all plugins are run.
23+
--verbose When true creates more verbose output. This is helpful w
24+
hen debugging. [boolean] [default: false]
25+
--config Path to config file. By default it loads code-pushup.con
26+
fig.(ts|mjs|js). [string]
27+
--tsconfig Path to a TypeScript config, to be used when loading con
28+
fig file. [string]
29+
--skipCategories List of categories to skip. If not set all categories ar
30+
e run. [array] [default: []]
31+
--onlyCategories List of categories to run. If not set all categories are
32+
run. [array] [default: []]
33+
-P, --skipPlugins List of plugins to skip. If not set all plugins are run.
3034
[array] [default: []]
31-
-P, --skipPlugins List of plugins to skip. If not set all plugins are run.
35+
-p, --onlyPlugins List of plugins to run. If not set all plugins are run.
3236
[array] [default: []]
3337
3438
Persist Options:

packages/cli/src/lib/history/history-command.ts

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import {
1010
ui,
1111
} from '@code-pushup/utils';
1212
import { CLI_NAME } from '../constants';
13-
import { yargsOnlyPluginsOptionsDefinition } from '../implementation/only-plugins.options';
14-
import { yargsSkipPluginsOptionsDefinition } from '../implementation/skip-plugins.options';
13+
import { yargsFilterOptionsDefinition } from '../implementation/filter.options';
1514
import type { HistoryCliOptions } from './history.model';
1615
import { yargsHistoryOptionsDefinition } from './history.options';
1716
import { normalizeHashOptions } from './utils';
@@ -65,8 +64,7 @@ export function yargsHistoryCommandObject() {
6564
builder: yargs => {
6665
yargs.options({
6766
...yargsHistoryOptionsDefinition(),
68-
...yargsOnlyPluginsOptionsDefinition(),
69-
...yargsSkipPluginsOptionsDefinition(),
67+
...yargsFilterOptionsDefinition(),
7068
});
7169
yargs.group(
7270
Object.keys(yargsHistoryOptionsDefinition()),

packages/cli/src/lib/implementation/core-config.middleware.ts

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,16 @@ import {
88
uploadConfigSchema,
99
} from '@code-pushup/models';
1010
import type { CoreConfigCliOptions } from './core-config.model';
11+
import type { FilterOptions } from './filter.model';
1112
import type { GeneralCliOptions } from './global.model';
12-
import type { OnlyPluginsOptions } from './only-plugins.model';
13-
import type { SkipPluginsOptions } from './skip-plugins.model';
1413

1514
export type CoreConfigMiddlewareOptions = GeneralCliOptions &
1615
CoreConfigCliOptions &
17-
OnlyPluginsOptions &
18-
SkipPluginsOptions;
16+
FilterOptions;
1917

2018
export async function coreConfigMiddleware<
2119
T extends CoreConfigMiddlewareOptions,
22-
>(
23-
processArgs: T,
24-
): Promise<
25-
GeneralCliOptions & CoreConfig & OnlyPluginsOptions & SkipPluginsOptions
26-
> {
20+
>(processArgs: T): Promise<GeneralCliOptions & CoreConfig & FilterOptions> {
2721
const {
2822
config,
2923
tsconfig,

packages/cli/src/lib/implementation/core-config.middleware.unit.test.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@ import {
55
normalizeFormats,
66
} from './core-config.middleware';
77
import type { CoreConfigCliOptions } from './core-config.model';
8+
import type { FilterOptions } from './filter.model';
89
import type { GeneralCliOptions } from './global.model';
9-
import type { OnlyPluginsOptions } from './only-plugins.model';
10-
import type { SkipPluginsOptions } from './skip-plugins.model';
1110

1211
vi.mock('@code-pushup/core', async () => {
1312
const { CORE_CONFIG_MOCK }: typeof import('@code-pushup/test-utils') =
@@ -41,18 +40,15 @@ describe('normalizeFormats', () => {
4140
describe('coreConfigMiddleware', () => {
4241
it('should attempt to load code-pushup.config.(ts|mjs|js) by default', async () => {
4342
await coreConfigMiddleware(
44-
{} as GeneralCliOptions &
45-
CoreConfigCliOptions &
46-
OnlyPluginsOptions &
47-
SkipPluginsOptions,
43+
{} as GeneralCliOptions & CoreConfigCliOptions & FilterOptions,
4844
);
4945
expect(autoloadRc).toHaveBeenCalled();
5046
});
5147

5248
it('should directly attempt to load passed config', async () => {
5349
await coreConfigMiddleware({
5450
config: 'cli/custom-config.mjs',
55-
} as GeneralCliOptions & CoreConfigCliOptions & OnlyPluginsOptions & SkipPluginsOptions);
51+
} as GeneralCliOptions & CoreConfigCliOptions & FilterOptions);
5652
expect(autoloadRc).not.toHaveBeenCalled();
5753
expect(readRcByPath).toHaveBeenCalledWith(
5854
'cli/custom-config.mjs',
@@ -63,15 +59,15 @@ describe('coreConfigMiddleware', () => {
6359
it('should forward --tsconfig option to config autoload', async () => {
6460
await coreConfigMiddleware({
6561
tsconfig: 'tsconfig.base.json',
66-
} as GeneralCliOptions & CoreConfigCliOptions & OnlyPluginsOptions & SkipPluginsOptions);
62+
} as GeneralCliOptions & CoreConfigCliOptions & FilterOptions);
6763
expect(autoloadRc).toHaveBeenCalledWith('tsconfig.base.json');
6864
});
6965

7066
it('should forward --tsconfig option to custom config load', async () => {
7167
await coreConfigMiddleware({
7268
config: 'apps/website/code-pushup.config.ts',
7369
tsconfig: 'apps/website/tsconfig.json',
74-
} as GeneralCliOptions & CoreConfigCliOptions & OnlyPluginsOptions & SkipPluginsOptions);
70+
} as GeneralCliOptions & CoreConfigCliOptions & FilterOptions);
7571
expect(readRcByPath).toHaveBeenCalledWith(
7672
'apps/website/code-pushup.config.ts',
7773
'apps/website/tsconfig.json',

packages/cli/src/lib/implementation/filter-plugins.middleware.ts

Lines changed: 0 additions & 64 deletions
This file was deleted.

0 commit comments

Comments
 (0)