From c3912484410235d4017f48bc5f82f020b67ba97a Mon Sep 17 00:00:00 2001 From: Igor Katsuba Date: Thu, 23 Nov 2023 23:14:53 +0200 Subject: [PATCH 1/4] refactor(cli): remove 'stdout' option from report output formats --- e2e/cli-e2e/tests/__snapshots__/help.e2e.test.ts.snap | 4 ++-- packages/cli/README.md | 2 +- .../cli/src/lib/implementation/core-config-options.ts | 2 +- .../src/lib/implementation/persist.integration.test.ts | 8 +++----- packages/core/src/lib/implementation/persist.ts | 10 ++++------ packages/models/src/lib/persist-config.ts | 4 ++-- .../configuration/files/code-pushup.config.ts.template | 2 +- 7 files changed, 14 insertions(+), 18 deletions(-) diff --git a/e2e/cli-e2e/tests/__snapshots__/help.e2e.test.ts.snap b/e2e/cli-e2e/tests/__snapshots__/help.e2e.test.ts.snap index 7143fbe32..d3ecea32c 100644 --- a/e2e/cli-e2e/tests/__snapshots__/help.e2e.test.ts.snap +++ b/e2e/cli-e2e/tests/__snapshots__/help.e2e.test.ts.snap @@ -20,8 +20,8 @@ Options: s [string] [default: \\"code-pushup.config.js\\"] --persist.outputDir Directory for the produced reports [string] --persist.filename Filename for the produced reports. [string] - --persist.format Format of the report output. e.g. \`md\`, \`json\`, \`st - dout\` [array] + --persist.format Format of the report output. e.g. \`md\`, \`json\` + [array] --upload.organization Organization slug from portal [string] --upload.project Project slug from portal [string] --upload.server URL to your portal server [string] diff --git a/packages/cli/README.md b/packages/cli/README.md index eaffa8462..e03058466 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -36,7 +36,7 @@ _If you're looking for programmatic usage, then refer to the underlying [@code-p export default { persist: { outputDir: '.code-pushup', - format: ['json', 'md', 'stdout'], + format: ['json', 'md'], }, plugins: [ // ... diff --git a/packages/cli/src/lib/implementation/core-config-options.ts b/packages/cli/src/lib/implementation/core-config-options.ts index 9d9a8d54c..ad8bce16c 100644 --- a/packages/cli/src/lib/implementation/core-config-options.ts +++ b/packages/cli/src/lib/implementation/core-config-options.ts @@ -14,7 +14,7 @@ export function yargsCoreConfigOptionsDefinition(): Record { type: 'string', }, 'persist.format': { - describe: 'Format of the report output. e.g. `md`, `json`, `stdout`', + describe: 'Format of the report output. e.g. `md`, `json`', type: 'array', }, // upload diff --git a/packages/core/src/lib/implementation/persist.integration.test.ts b/packages/core/src/lib/implementation/persist.integration.test.ts index c2efa8ef8..c1fa5408b 100644 --- a/packages/core/src/lib/implementation/persist.integration.test.ts +++ b/packages/core/src/lib/implementation/persist.integration.test.ts @@ -86,7 +86,7 @@ describe('persistReport', () => { }); it('should log to console when format is stdout`', async () => { - const persist = persistConfig({ outputDir, format: ['stdout'] }); + const persist = persistConfig({ outputDir, format: [] }); await persistReport(dummyReport, { ...dummyConfig, @@ -109,7 +109,6 @@ describe('persistReport', () => { const jsonReport: Report = readReport('json'); expect(jsonReport.packageName).toBe('@code-pushup/core'); - expect(console.log).toHaveBeenCalledTimes(0); expect(() => readReport('md')).toThrow('no such file or directory'); }); @@ -124,7 +123,6 @@ describe('persistReport', () => { `${FOOTER_PREFIX} [Code PushUp](${README_LINK})`, ); - expect(console.log).toHaveBeenCalledTimes(0); expect(() => readFileSync(reportPath('json'))).not.toThrow( 'no such file or directory', ); @@ -133,7 +131,7 @@ describe('persistReport', () => { it('should persist all formats`', async () => { const persist = persistConfig({ outputDir, - format: ['json', 'md', 'stdout'], + format: ['json', 'md'], }); await persistReport(dummyReport, { ...dummyConfig, @@ -154,7 +152,7 @@ describe('persistReport', () => { }); it('should persist some formats`', async () => { - const persist = persistConfig({ outputDir, format: ['md', 'stdout'] }); + const persist = persistConfig({ outputDir, format: ['md'] }); await persistReport(dummyReport, { ...dummyConfig, persist, diff --git a/packages/core/src/lib/implementation/persist.ts b/packages/core/src/lib/implementation/persist.ts index 3a51f405d..e188c8953 100644 --- a/packages/core/src/lib/implementation/persist.ts +++ b/packages/core/src/lib/implementation/persist.ts @@ -31,12 +31,10 @@ export async function persistReport( const outputDir = persist.outputDir; const filename = persist.filename; const format = - persist.format && persist.format.length !== 0 ? persist.format : ['stdout']; - let scoredReport; - if (format.includes('stdout')) { - scoredReport = scoreReport(report); - console.log(reportToStdout(scoredReport)); - } + persist.format && persist.format.length !== 0 ? persist.format : []; + + let scoredReport = scoreReport(report); + console.log(reportToStdout(scoredReport)); // collect physical format outputs const results: { format: string; content: string }[] = [ diff --git a/packages/models/src/lib/persist-config.ts b/packages/models/src/lib/persist-config.ts index 9e43af420..00e480e61 100644 --- a/packages/models/src/lib/persist-config.ts +++ b/packages/models/src/lib/persist-config.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; import { fileNameSchema, filePathSchema } from './implementation/schemas'; -export const formatSchema = z.enum(['json', 'stdout', 'md']); +export const formatSchema = z.enum(['json', 'md']); export type Format = z.infer; export const persistConfigSchema = z.object({ @@ -9,7 +9,7 @@ export const persistConfigSchema = z.object({ filename: fileNameSchema('Artifacts file name (without extension)').default( 'report', ), - format: z.array(formatSchema).default(['stdout']).optional(), // @TODO remove default or optional value and otherwise it will not set defaults. + format: z.array(formatSchema).default(['json']).optional(), // @TODO remove default or optional value and otherwise it will not set defaults. }); export type PersistConfig = z.infer; diff --git a/packages/nx-plugin/src/generators/configuration/files/code-pushup.config.ts.template b/packages/nx-plugin/src/generators/configuration/files/code-pushup.config.ts.template index ebed45fe7..79631b3b9 100644 --- a/packages/nx-plugin/src/generators/configuration/files/code-pushup.config.ts.template +++ b/packages/nx-plugin/src/generators/configuration/files/code-pushup.config.ts.template @@ -3,7 +3,7 @@ import type { CoreConfig } from '@code-pushup/models'; const config: CoreConfig = { persist: { outputDir: '.code-pushup', - format: ['json', 'md', 'stdout'], + format: ['json', 'md'], }, plugins: [ // ... From ecbe3bb2f1d1e5df4df3d44c57a8406a95315d97 Mon Sep 17 00:00:00 2001 From: Igor Katsuba Date: Fri, 24 Nov 2023 21:07:22 +0200 Subject: [PATCH 2/4] chore: rename test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Matěj Chalk <34691111+matejchalk@users.noreply.github.com> --- .../core/src/lib/implementation/persist.integration.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/lib/implementation/persist.integration.test.ts b/packages/core/src/lib/implementation/persist.integration.test.ts index c1fa5408b..f04e02d21 100644 --- a/packages/core/src/lib/implementation/persist.integration.test.ts +++ b/packages/core/src/lib/implementation/persist.integration.test.ts @@ -85,7 +85,7 @@ describe('persistReport', () => { expect(() => readReport('md')).toThrow('no such file or directory'); }); - it('should log to console when format is stdout`', async () => { + it('should log to console regardless of format`', async () => { const persist = persistConfig({ outputDir, format: [] }); await persistReport(dummyReport, { From dd5d799e2389fdaaaba63d1ab684042391d6ef0b Mon Sep 17 00:00:00 2001 From: Igor Katsuba Date: Fri, 24 Nov 2023 21:08:18 +0200 Subject: [PATCH 3/4] Update packages/core/src/lib/implementation/persist.ts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Matěj Chalk <34691111+matejchalk@users.noreply.github.com> --- packages/core/src/lib/implementation/persist.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/lib/implementation/persist.ts b/packages/core/src/lib/implementation/persist.ts index e188c8953..3f2d651e3 100644 --- a/packages/core/src/lib/implementation/persist.ts +++ b/packages/core/src/lib/implementation/persist.ts @@ -31,7 +31,7 @@ export async function persistReport( const outputDir = persist.outputDir; const filename = persist.filename; const format = - persist.format && persist.format.length !== 0 ? persist.format : []; + persist.format ?? []; let scoredReport = scoreReport(report); console.log(reportToStdout(scoredReport)); From d66801d1b37458dd21dcf6eda0fdb10e98ec2a83 Mon Sep 17 00:00:00 2001 From: Igor Katsuba Date: Fri, 24 Nov 2023 21:25:30 +0200 Subject: [PATCH 4/4] chore(core): simplify format assignment --- packages/core/src/lib/implementation/persist.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/core/src/lib/implementation/persist.ts b/packages/core/src/lib/implementation/persist.ts index 3f2d651e3..c5d7e9a85 100644 --- a/packages/core/src/lib/implementation/persist.ts +++ b/packages/core/src/lib/implementation/persist.ts @@ -30,8 +30,7 @@ export async function persistReport( const { persist } = config; const outputDir = persist.outputDir; const filename = persist.filename; - const format = - persist.format ?? []; + const format = persist.format ?? []; let scoredReport = scoreReport(report); console.log(reportToStdout(scoredReport));