Skip to content

Commit

Permalink
feat(cli): print full report url after upload
Browse files Browse the repository at this point in the history
  • Loading branch information
matejchalk committed Feb 16, 2024
1 parent 89559ae commit 0eb7771
Show file tree
Hide file tree
Showing 11 changed files with 25 additions and 89 deletions.
15 changes: 8 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
"node": ">=18.16"
},
"dependencies": {
"@code-pushup/portal-client": "^0.5.0",
"@code-pushup/portal-client": "^0.6.1",
"@isaacs/cliui": "^8.0.2",
"@poppinss/cliui": "^6.3.0",
"@swc/helpers": "0.5.3",
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/lib/autorun/autorun-command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,10 +49,10 @@ export function yargsAutorunCommandObject() {
}

if (options.upload) {
await upload(options);
const { url } = await upload(options);
const commitData = await getLatestCommit();
if (validateCommitData(commitData, { throwError: true })) {
uploadSuccessfulLog(options.upload, commitData.hash);
uploadSuccessfulLog(url);
}
} else {
ui().logger.warning('Upload skipped because configuration is not set.');
Expand Down
18 changes: 3 additions & 15 deletions packages/cli/src/lib/implementation/logging.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { cliui } from '@poppinss/cliui';
import chalk from 'chalk';
import { UploadConfig } from '@code-pushup/models';
import { link, portalCommitDashboardLink } from '@code-pushup/utils';
import { link } from '@code-pushup/utils';

export type CliUi = ReturnType<typeof cliui>;

Expand All @@ -23,20 +22,9 @@ export function renderConfigureCategoriesHint(): void {
),
);
}
export function uploadSuccessfulLog(
options: UploadConfig,
commit: string,
): void {
export function uploadSuccessfulLog(url: string): void {
ui().logger.success('Upload successful!');
ui().logger.success(
link(
// @TODO extend config to maintain baseUrl under upload
portalCommitDashboardLink(
{ ...options, baseUrl: '<YOUR_PORTAL_URL>' },
commit,
),
),
);
ui().logger.success(link(url));
}
export function collectSuccessfulLog(): void {
ui().logger.success('Collecting report successful!');
Expand Down
4 changes: 2 additions & 2 deletions packages/cli/src/lib/upload/upload-command.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ export function yargsUploadCommandObject() {
renderIntegratePortalHint();
throw new Error('Upload configuration not set');
}
await upload(options);
const { url } = await upload(options);

const commitData = await getLatestCommit();
if (validateCommitData(commitData, { throwError: true })) {
uploadSuccessfulLog(options.upload, commitData.hash);
uploadSuccessfulLog(url);
}
},
} satisfies CommandModule;
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"dependencies": {
"@code-pushup/models": "*",
"@code-pushup/utils": "*",
"@code-pushup/portal-client": "^0.5.0",
"@code-pushup/portal-client": "^0.6.1",
"chalk": "^5.3.0"
},
"type": "commonjs",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/lib/upload.unit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ describe('upload', () => {
},
});

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

expect(uploadToPortal).toHaveBeenCalledWith({
apiKey: 'dummy-api-key',
Expand Down
1 change: 0 additions & 1 deletion packages/utils/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ export {
calcDuration,
compareIssueSeverity,
loadReport,
portalCommitDashboardLink,
} from './lib/reports/utils';
export {
CliArgsObject,
Expand Down
23 changes: 0 additions & 23 deletions packages/utils/src/lib/reports/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import {
Issue,
PersistConfig,
Report,
UploadConfig,
reportSchema,
} from '@code-pushup/models';
import {
Expand Down Expand Up @@ -305,25 +304,3 @@ export function compareIssues(a: Issue, b: Issue): number {

return 0;
}

export type CommitLinkOptions = Pick<
UploadConfig,
'project' | 'organization'
> & {
baseUrl: string;
};

export function portalCommitLink(
config: CommitLinkOptions,
commit: string,
): string {
const { organization, project, baseUrl } = config;
return `${baseUrl}/portal/${organization}/${project}/commit/${commit}`;
}

export function portalCommitDashboardLink(
config: CommitLinkOptions,
commit: string,
): string {
return `${portalCommitLink(config, commit)}/dashboard`;
}
34 changes: 0 additions & 34 deletions packages/utils/src/lib/reports/utils.unit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@ import {
formatReportScore,
getPluginNameFromSlug,
loadReport,
portalCommitDashboardLink,
portalCommitLink,
} from './utils';

describe('calcDuration', () => {
Expand Down Expand Up @@ -298,35 +296,3 @@ describe('sortAuditIssues', () => {
]);
});
});

describe('portalCommitLink', () => {
it('should return link to portal', () => {
expect(
portalCommitLink(
{
baseUrl: 'https://code-pushup.com',
organization: 'code-pushup',
project: 'cli',
},
'123',
),
).toBe('https://code-pushup.com/portal/code-pushup/cli/commit/123');
});
});

describe('portalCommitDashboardLink', () => {
it('should return link to portal dashboard', () => {
expect(
portalCommitDashboardLink(
{
baseUrl: 'https://code-pushup.com',
organization: 'code-pushup',
project: 'cli',
},
'123',
),
).toBe(
'https://code-pushup.com/portal/code-pushup/cli/commit/123/dashboard',
);
});
});
9 changes: 7 additions & 2 deletions testing/test-setup/src/lib/portal-client.mock.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
import { vi } from 'vitest';
import { ReportFragment } from '@code-pushup/portal-client';
import type {
PortalUploadArgs,
ReportFragment,
} from '@code-pushup/portal-client';

vi.mock('@code-pushup/portal-client', async () => {
const module: typeof import('@code-pushup/portal-client') =
Expand All @@ -8,7 +11,9 @@ vi.mock('@code-pushup/portal-client', async () => {
return {
...module,
uploadToPortal: vi.fn(
async () => ({ packageName: '@code-pushup/cli' } as ReportFragment),
async ({ data }: PortalUploadArgs): Promise<ReportFragment> => ({
url: `https://code-pushup.example.com/portal/${data.organization}/${data.project}/commit/${data.commit}`,
}),
),
};
});

0 comments on commit 0eb7771

Please sign in to comment.