Skip to content

Commit 0eb7771

Browse files
committed
feat(cli): print full report url after upload
1 parent 89559ae commit 0eb7771

File tree

11 files changed

+25
-89
lines changed

11 files changed

+25
-89
lines changed

package-lock.json

+8-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"node": ">=18.16"
4747
},
4848
"dependencies": {
49-
"@code-pushup/portal-client": "^0.5.0",
49+
"@code-pushup/portal-client": "^0.6.1",
5050
"@isaacs/cliui": "^8.0.2",
5151
"@poppinss/cliui": "^6.3.0",
5252
"@swc/helpers": "0.5.3",

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,10 @@ export function yargsAutorunCommandObject() {
4949
}
5050

5151
if (options.upload) {
52-
await upload(options);
52+
const { url } = await upload(options);
5353
const commitData = await getLatestCommit();
5454
if (validateCommitData(commitData, { throwError: true })) {
55-
uploadSuccessfulLog(options.upload, commitData.hash);
55+
uploadSuccessfulLog(url);
5656
}
5757
} else {
5858
ui().logger.warning('Upload skipped because configuration is not set.');

packages/cli/src/lib/implementation/logging.ts

+3-15
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { cliui } from '@poppinss/cliui';
22
import chalk from 'chalk';
3-
import { UploadConfig } from '@code-pushup/models';
4-
import { link, portalCommitDashboardLink } from '@code-pushup/utils';
3+
import { link } from '@code-pushup/utils';
54

65
export type CliUi = ReturnType<typeof cliui>;
76

@@ -23,20 +22,9 @@ export function renderConfigureCategoriesHint(): void {
2322
),
2423
);
2524
}
26-
export function uploadSuccessfulLog(
27-
options: UploadConfig,
28-
commit: string,
29-
): void {
25+
export function uploadSuccessfulLog(url: string): void {
3026
ui().logger.success('Upload successful!');
31-
ui().logger.success(
32-
link(
33-
// @TODO extend config to maintain baseUrl under upload
34-
portalCommitDashboardLink(
35-
{ ...options, baseUrl: '<YOUR_PORTAL_URL>' },
36-
commit,
37-
),
38-
),
39-
);
27+
ui().logger.success(link(url));
4028
}
4129
export function collectSuccessfulLog(): void {
4230
ui().logger.success('Collecting report successful!');

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ export function yargsUploadCommandObject() {
2323
renderIntegratePortalHint();
2424
throw new Error('Upload configuration not set');
2525
}
26-
await upload(options);
26+
const { url } = await upload(options);
2727

2828
const commitData = await getLatestCommit();
2929
if (validateCommitData(commitData, { throwError: true })) {
30-
uploadSuccessfulLog(options.upload, commitData.hash);
30+
uploadSuccessfulLog(url);
3131
}
3232
},
3333
} satisfies CommandModule;

packages/core/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"dependencies": {
66
"@code-pushup/models": "*",
77
"@code-pushup/utils": "*",
8-
"@code-pushup/portal-client": "^0.5.0",
8+
"@code-pushup/portal-client": "^0.6.1",
99
"chalk": "^5.3.0"
1010
},
1111
"type": "commonjs",

packages/core/src/lib/upload.unit.test.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ describe('upload', () => {
3333
},
3434
});
3535

36-
expect(result).toEqual({ packageName: '@code-pushup/cli' });
36+
expect(result).toEqual({ url: expect.stringContaining('code-pushup/cli') });
3737

3838
expect(uploadToPortal).toHaveBeenCalledWith({
3939
apiKey: 'dummy-api-key',

packages/utils/src/index.ts

-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ export {
6464
calcDuration,
6565
compareIssueSeverity,
6666
loadReport,
67-
portalCommitDashboardLink,
6867
} from './lib/reports/utils';
6968
export {
7069
CliArgsObject,

packages/utils/src/lib/reports/utils.ts

-23
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77
Issue,
88
PersistConfig,
99
Report,
10-
UploadConfig,
1110
reportSchema,
1211
} from '@code-pushup/models';
1312
import {
@@ -305,25 +304,3 @@ export function compareIssues(a: Issue, b: Issue): number {
305304

306305
return 0;
307306
}
308-
309-
export type CommitLinkOptions = Pick<
310-
UploadConfig,
311-
'project' | 'organization'
312-
> & {
313-
baseUrl: string;
314-
};
315-
316-
export function portalCommitLink(
317-
config: CommitLinkOptions,
318-
commit: string,
319-
): string {
320-
const { organization, project, baseUrl } = config;
321-
return `${baseUrl}/portal/${organization}/${project}/commit/${commit}`;
322-
}
323-
324-
export function portalCommitDashboardLink(
325-
config: CommitLinkOptions,
326-
commit: string,
327-
): string {
328-
return `${portalCommitLink(config, commit)}/dashboard`;
329-
}

packages/utils/src/lib/reports/utils.unit.test.ts

-34
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ import {
1717
formatReportScore,
1818
getPluginNameFromSlug,
1919
loadReport,
20-
portalCommitDashboardLink,
21-
portalCommitLink,
2220
} from './utils';
2321

2422
describe('calcDuration', () => {
@@ -298,35 +296,3 @@ describe('sortAuditIssues', () => {
298296
]);
299297
});
300298
});
301-
302-
describe('portalCommitLink', () => {
303-
it('should return link to portal', () => {
304-
expect(
305-
portalCommitLink(
306-
{
307-
baseUrl: 'https://code-pushup.com',
308-
organization: 'code-pushup',
309-
project: 'cli',
310-
},
311-
'123',
312-
),
313-
).toBe('https://code-pushup.com/portal/code-pushup/cli/commit/123');
314-
});
315-
});
316-
317-
describe('portalCommitDashboardLink', () => {
318-
it('should return link to portal dashboard', () => {
319-
expect(
320-
portalCommitDashboardLink(
321-
{
322-
baseUrl: 'https://code-pushup.com',
323-
organization: 'code-pushup',
324-
project: 'cli',
325-
},
326-
'123',
327-
),
328-
).toBe(
329-
'https://code-pushup.com/portal/code-pushup/cli/commit/123/dashboard',
330-
);
331-
});
332-
});
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
import { vi } from 'vitest';
2-
import { ReportFragment } from '@code-pushup/portal-client';
2+
import type {
3+
PortalUploadArgs,
4+
ReportFragment,
5+
} from '@code-pushup/portal-client';
36

47
vi.mock('@code-pushup/portal-client', async () => {
58
const module: typeof import('@code-pushup/portal-client') =
@@ -8,7 +11,9 @@ vi.mock('@code-pushup/portal-client', async () => {
811
return {
912
...module,
1013
uploadToPortal: vi.fn(
11-
async () => ({ packageName: '@code-pushup/cli' } as ReportFragment),
14+
async ({ data }: PortalUploadArgs): Promise<ReportFragment> => ({
15+
url: `https://code-pushup.example.com/portal/${data.organization}/${data.project}/commit/${data.commit}`,
16+
}),
1217
),
1318
};
1419
});

0 commit comments

Comments
 (0)