Skip to content

Commit 7a1f95a

Browse files
committed
refactor: use string array for pluginInit
1 parent b279c73 commit 7a1f95a

11 files changed

Lines changed: 117 additions & 70 deletions

File tree

packages/create-cli/src/lib/setup/codegen.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ function addPlugins(
147147
builder.addLine('// TODO: register some plugins', depth + 1);
148148
} else {
149149
builder.addLines(
150-
plugins.map(({ pluginInit }) => `${pluginInit},`),
150+
plugins.flatMap(({ pluginInit }) => pluginInit),
151151
depth + 1,
152152
);
153153
}

packages/create-cli/src/lib/setup/codegen.unit.test.ts

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ const ESLINT_PLUGIN: PluginCodegenResult = {
1414
defaultImport: 'eslintPlugin',
1515
},
1616
],
17-
pluginInit: "await eslintPlugin({ patterns: '.' })",
17+
pluginInit: ["await eslintPlugin({ patterns: '.' }),"],
1818
};
1919

2020
const ESLINT_CATEGORIES: CategoryConfig[] = [
@@ -58,7 +58,7 @@ describe('generateConfigSource', () => {
5858
defaultImport: 'eslintPlugin',
5959
},
6060
],
61-
pluginInit: 'await eslintPlugin()',
61+
pluginInit: ['await eslintPlugin(),'],
6262
};
6363

6464
expect(generateConfigSource([plugin], 'ts')).toMatchInlineSnapshot(`
@@ -83,8 +83,9 @@ describe('generateConfigSource', () => {
8383
namedImports: ['eslintConfigFromAllNxProjects'],
8484
},
8585
],
86-
pluginInit:
87-
'await eslintPlugin({ eslintrc: eslintConfigFromAllNxProjects() })',
86+
pluginInit: [
87+
'await eslintPlugin({ eslintrc: eslintConfigFromAllNxProjects() }),',
88+
],
8889
};
8990

9091
expect(generateConfigSource([plugin], 'ts')).toMatchInlineSnapshot(`
@@ -100,7 +101,7 @@ describe('generateConfigSource', () => {
100101
`);
101102
});
102103

103-
it('should generate config with multiple plugins', () => {
104+
it('should generate config with multiple plugins including multiline', () => {
104105
const plugins: PluginCodegenResult[] = [
105106
{
106107
imports: [
@@ -109,7 +110,7 @@ describe('generateConfigSource', () => {
109110
defaultImport: 'eslintPlugin',
110111
},
111112
],
112-
pluginInit: 'await eslintPlugin()',
113+
pluginInit: ['await eslintPlugin(),'],
113114
},
114115
{
115116
imports: [
@@ -118,8 +119,11 @@ describe('generateConfigSource', () => {
118119
defaultImport: 'coveragePlugin',
119120
},
120121
],
121-
pluginInit:
122-
"await coveragePlugin({ reports: [{ resultsPath: 'coverage/lcov.info', pathToProject: '' }] })",
122+
pluginInit: [
123+
'await coveragePlugin({',
124+
" reports: ['coverage/lcov.info'],",
125+
'}),',
126+
],
123127
},
124128
];
125129

@@ -131,7 +135,9 @@ describe('generateConfigSource', () => {
131135
export default {
132136
plugins: [
133137
await eslintPlugin(),
134-
await coveragePlugin({ reports: [{ resultsPath: 'coverage/lcov.info', pathToProject: '' }] }),
138+
await coveragePlugin({
139+
reports: ['coverage/lcov.info'],
140+
}),
135141
],
136142
} satisfies CoreConfig;
137143
"
@@ -160,7 +166,7 @@ describe('generateConfigSource', () => {
160166
defaultImport: 'eslintPlugin',
161167
},
162168
],
163-
pluginInit: 'await eslintPlugin()',
169+
pluginInit: ['await eslintPlugin(),'],
164170
};
165171

166172
expect(generateConfigSource([plugin], 'js')).toMatchInlineSnapshot(`
@@ -185,7 +191,7 @@ describe('generateConfigSource', () => {
185191
defaultImport: 'eslintPlugin',
186192
},
187193
],
188-
pluginInit: 'await eslintPlugin()',
194+
pluginInit: ['await eslintPlugin(),'],
189195
},
190196
{
191197
imports: [
@@ -194,8 +200,9 @@ describe('generateConfigSource', () => {
194200
defaultImport: 'coveragePlugin',
195201
},
196202
],
197-
pluginInit:
198-
"await coveragePlugin({ reports: [{ resultsPath: 'coverage/lcov.info', pathToProject: '' }] })",
203+
pluginInit: [
204+
"await coveragePlugin({ reports: [{ resultsPath: 'coverage/lcov.info', pathToProject: '' }] }),",
205+
],
199206
},
200207
];
201208

@@ -266,7 +273,7 @@ describe('generateConfigSource', () => {
266273
defaultImport: 'coveragePlugin',
267274
},
268275
],
269-
pluginInit: 'await coveragePlugin()',
276+
pluginInit: ['await coveragePlugin(),'],
270277
categories: [
271278
{
272279
slug: 'code-coverage',

packages/create-cli/src/lib/setup/plugins.unit.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@ describe('validatePluginSlugs', () => {
1717
slug: 'eslint',
1818
title: 'ESLint',
1919
packageName: '@code-pushup/eslint-plugin',
20-
generateConfig: () => ({ imports: [], pluginInit: '' }),
20+
generateConfig: () => ({ imports: [], pluginInit: [] }),
2121
},
2222
{
2323
slug: 'coverage',
2424
title: 'Code Coverage',
2525
packageName: '@code-pushup/coverage-plugin',
26-
generateConfig: () => ({ imports: [], pluginInit: '' }),
26+
generateConfig: () => ({ imports: [], pluginInit: [] }),
2727
},
2828
];
2929

packages/create-cli/src/lib/setup/prompts.unit.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,19 +96,19 @@ describe('promptPluginSelection', () => {
9696
slug: 'eslint',
9797
title: 'ESLint',
9898
packageName: '@code-pushup/eslint-plugin',
99-
generateConfig: () => ({ imports: [], pluginInit: '' }),
99+
generateConfig: () => ({ imports: [], pluginInit: [] }),
100100
},
101101
{
102102
slug: 'coverage',
103103
title: 'Code Coverage',
104104
packageName: '@code-pushup/coverage-plugin',
105-
generateConfig: () => ({ imports: [], pluginInit: '' }),
105+
generateConfig: () => ({ imports: [], pluginInit: [] }),
106106
},
107107
{
108108
slug: 'lighthouse',
109109
title: 'Lighthouse',
110110
packageName: '@code-pushup/lighthouse-plugin',
111-
generateConfig: () => ({ imports: [], pluginInit: '' }),
111+
generateConfig: () => ({ imports: [], pluginInit: [] }),
112112
},
113113
];
114114

packages/create-cli/src/lib/setup/wizard.int.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const TEST_BINDINGS: PluginSetupBinding[] = [
3737
defaultImport: 'alphaPlugin',
3838
},
3939
],
40-
pluginInit: `alphaPlugin(${JSON.stringify(configPath)})`,
40+
pluginInit: [`alphaPlugin(${JSON.stringify(configPath)}),`],
4141
};
4242
},
4343
},
@@ -53,7 +53,7 @@ const TEST_BINDINGS: PluginSetupBinding[] = [
5353
defaultImport: 'betaPlugin',
5454
},
5555
],
56-
pluginInit: 'betaPlugin()',
56+
pluginInit: ['betaPlugin(),'],
5757
}),
5858
},
5959
];

packages/create-cli/src/lib/setup/wizard.unit.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const TEST_BINDING: PluginSetupBinding = {
3030
defaultImport: 'testPlugin',
3131
},
3232
],
33-
pluginInit: 'testPlugin()',
33+
pluginInit: ['testPlugin(),'],
3434
}),
3535
};
3636

@@ -172,7 +172,7 @@ describe('runSetupWizard', () => {
172172
defaultImport: 'testPlugin',
173173
},
174174
],
175-
pluginInit: 'testPlugin()',
175+
pluginInit: ['testPlugin(),'],
176176
}),
177177
};
178178

@@ -189,7 +189,7 @@ describe('runSetupWizard', () => {
189189
defaultImport: 'rootPlugin',
190190
},
191191
],
192-
pluginInit: 'rootPlugin()',
192+
pluginInit: ['rootPlugin(),'],
193193
}),
194194
};
195195

packages/models/src/lib/plugin-setup.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ export type PluginAnswer = string | string[] | boolean;
5050
/** Code a plugin binding contributes to the generated config. */
5151
export type PluginCodegenResult = {
5252
imports: ImportDeclarationStructure[];
53-
pluginInit: string;
53+
pluginInit: string[];
5454
categories?: CategoryConfig[];
5555
};
5656

packages/plugin-coverage/src/lib/binding.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -184,27 +184,29 @@ async function configureLcovReporter(
184184
function formatPluginInit(
185185
options: CoverageOptions,
186186
lcovConfigured: boolean,
187-
): string {
187+
): string[] {
188188
const { reportPath, testCommand, types, continueOnFail } = options;
189189

190190
const hasCustomTypes =
191191
types.length > 0 && types.length < ALL_COVERAGE_TYPES.length;
192192

193193
const body = [
194-
`reports: [${singleQuote(reportPath)}]`,
194+
`reports: [${singleQuote(reportPath)}],`,
195195
testCommand
196-
? `coverageToolCommand: { command: ${singleQuote(testCommand)} }`
196+
? `coverageToolCommand: { command: ${singleQuote(testCommand)} },`
197197
: '',
198198
hasCustomTypes
199-
? `coverageTypes: [${types.map(singleQuote).join(', ')}]`
199+
? `coverageTypes: [${types.map(singleQuote).join(', ')}],`
200200
: '',
201-
continueOnFail ? '' : 'continueOnCommandFail: false',
202-
]
203-
.filter(Boolean)
204-
.join(',\n ');
201+
continueOnFail ? '' : 'continueOnCommandFail: false,',
202+
].filter(Boolean);
205203

206-
const init = `await coveragePlugin({\n ${body},\n })`;
207-
return lcovConfigured ? init : `${LCOV_COMMENT}\n ${init}`;
204+
const init = [
205+
'await coveragePlugin({',
206+
...body.map(line => ` ${line}`),
207+
'}),',
208+
];
209+
return lcovConfigured ? init : [LCOV_COMMENT, ...init];
208210
}
209211

210212
async function isRecommended(targetDir: string): Promise<boolean> {

0 commit comments

Comments
 (0)