Skip to content

Commit 1a6c6fa

Browse files
committed
feat(cli): forward plugins and categories if onlyPlugins is invalid
1 parent 120b316 commit 1a6c6fa

2 files changed

Lines changed: 36 additions & 6 deletions

File tree

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

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,30 @@ export function onlyPluginsMiddleware<T extends OnlyPluginsOptions>(
99
originalProcessArgs;
1010

1111
if (originalOnlyPlugins && originalOnlyPlugins.length > 0) {
12-
const { verbose, plugins, onlyPlugins } = originalProcessArgs;
12+
const { verbose, plugins, onlyPlugins = [] } = originalProcessArgs;
1313

1414
validateOnlyPluginsOption(
1515
{ plugins, categories },
1616
{ onlyPlugins, verbose },
1717
);
1818

19-
const onlyPluginsSet = new Set(onlyPlugins);
19+
const validOnlyPlugins = onlyPlugins.filter(oP =>
20+
plugins.find(p => p.slug === oP),
21+
);
22+
const onlyPluginsSet = new Set(validOnlyPlugins);
2023

2124
return {
2225
...originalProcessArgs,
23-
plugins: plugins.filter(({ slug }) => onlyPluginsSet.has(slug)),
24-
categories: filterItemRefsBy(categories, ({ plugin }) =>
25-
onlyPluginsSet.has(plugin),
26-
),
26+
plugins:
27+
onlyPluginsSet.size > 0
28+
? plugins.filter(({ slug }) => onlyPluginsSet.has(slug))
29+
: plugins,
30+
categories:
31+
onlyPluginsSet.size > 0
32+
? filterItemRefsBy(categories, ({ plugin }) =>
33+
onlyPluginsSet.has(plugin),
34+
)
35+
: categories,
2736
};
2837
}
2938

packages/cli/src/lib/implementation/only-plugins.middleware.unit.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,27 @@ describe('onlyPluginsMiddleware', () => {
4949
});
5050

5151
it('should filter categories for slug "p1"', () => {
52+
const originalCategories = [
53+
{
54+
slug: 'c1',
55+
refs: [
56+
{ plugin: 'p1', slug: 'a1-p1' },
57+
{ plugin: 'p2', slug: 'a2-p1' },
58+
],
59+
},
60+
{ slug: 'c2', refs: [{ plugin: 'p2', slug: 'a1-p2' }] },
61+
] as CategoryConfig[];
62+
const originalPlugins = [{ slug: 'p1' }, { slug: 'p2' }] as PluginConfig[];
63+
const { categories, plugins } = onlyPluginsMiddleware({
64+
onlyPlugins: ['wrong-slug'],
65+
plugins: originalPlugins,
66+
categories: originalCategories,
67+
});
68+
expect(categories).toBe(originalCategories);
69+
expect(plugins).toBe(originalPlugins);
70+
});
71+
72+
it('should forward plugins and categories for a slug not present in plugins', () => {
5273
const { categories } = onlyPluginsMiddleware({
5374
onlyPlugins: ['p1'],
5475
plugins: [{ slug: 'p1' }, { slug: 'p2' }] as PluginConfig[],

0 commit comments

Comments
 (0)