Skip to content

Commit 5bee07c

Browse files
authored
Merge pull request #1819 from github/koesie10/fix-export-title
Fix Gist title in result export
2 parents bf84dbe + 6a431b0 commit 5bee07c

2 files changed

Lines changed: 56 additions & 25 deletions

File tree

extensions/ql-vscode/src/remote-queries/export-results.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
generateMarkdown,
2121
generateVariantAnalysisMarkdown,
2222
MarkdownFile,
23+
RepositorySummary,
2324
} from "./remote-queries-markdown-generation";
2425
import { RemoteQuery } from "./remote-query";
2526
import { AnalysisResults, sumAnalysesResults } from "./shared/analysis-result";
@@ -235,11 +236,14 @@ export async function exportVariantAnalysisAnalysisResults(
235236
>,
236237
exportFormat: "gist" | "local",
237238
) {
238-
const description = buildVariantAnalysisGistDescription(variantAnalysis);
239-
const markdownFiles = await generateVariantAnalysisMarkdown(
239+
const { markdownFiles, summaries } = await generateVariantAnalysisMarkdown(
240240
variantAnalysis,
241241
analysesResults,
242-
"gist",
242+
exportFormat,
243+
);
244+
const description = buildVariantAnalysisGistDescription(
245+
variantAnalysis,
246+
summaries,
243247
);
244248

245249
await exportResults(
@@ -345,20 +349,16 @@ const buildGistDescription = (
345349
*/
346350
const buildVariantAnalysisGistDescription = (
347351
variantAnalysis: VariantAnalysis,
352+
summaries: RepositorySummary[],
348353
) => {
349-
const resultCount =
350-
variantAnalysis.scannedRepos?.reduce(
351-
(acc, item) => acc + (item.resultCount ?? 0),
352-
0,
353-
) ?? 0;
354+
const resultCount = summaries.reduce(
355+
(acc, summary) => acc + (summary.resultCount ?? 0),
356+
0,
357+
);
354358
const resultLabel = pluralize(resultCount, "result", "results");
355359

356-
const repositoryLabel = variantAnalysis.scannedRepos?.length
357-
? `(${pluralize(
358-
variantAnalysis.scannedRepos.length,
359-
"repository",
360-
"repositories",
361-
)})`
360+
const repositoryLabel = summaries.length
361+
? `(${pluralize(summaries.length, "repository", "repositories")})`
362362
: "";
363363
return `${variantAnalysis.query.name} (${variantAnalysis.query.language}) ${resultLabel} ${repositoryLabel}`;
364364
};

extensions/ql-vscode/src/remote-queries/remote-queries-markdown-generation.ts

Lines changed: 42 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
VariantAnalysisScannedRepository,
1919
VariantAnalysisScannedRepositoryResult,
2020
} from "./shared/variant-analysis";
21+
import { RepositoryWithMetadata } from "./shared/repository";
2122

2223
export type MarkdownLinkType = "local" | "gist";
2324

@@ -74,6 +75,17 @@ export function generateMarkdown(
7475
return [summaryFile, ...resultsFiles];
7576
}
7677

78+
export interface RepositorySummary {
79+
fileName: string;
80+
repository: RepositoryWithMetadata;
81+
resultCount: number;
82+
}
83+
84+
export interface VariantAnalysisMarkdown {
85+
markdownFiles: MarkdownFile[];
86+
summaries: RepositorySummary[];
87+
}
88+
7789
/**
7890
* Generates markdown files with variant analysis results.
7991
*/
@@ -83,23 +95,22 @@ export async function generateVariantAnalysisMarkdown(
8395
[VariantAnalysisScannedRepository, VariantAnalysisScannedRepositoryResult]
8496
>,
8597
linkType: MarkdownLinkType,
86-
): Promise<MarkdownFile[]> {
98+
): Promise<VariantAnalysisMarkdown> {
8799
const resultsFiles: MarkdownFile[] = [];
88-
// Generate summary file with links to individual files
89-
const summaryFile: MarkdownFile =
90-
generateVariantAnalysisMarkdownSummary(variantAnalysis);
100+
const summaries: RepositorySummary[] = [];
91101
for await (const [scannedRepo, result] of results) {
92-
if (scannedRepo.resultCount === 0) {
102+
if (!scannedRepo.resultCount || scannedRepo.resultCount === 0) {
93103
continue;
94104
}
95105

96106
// Append nwo and results count to the summary table
97107
const fullName = scannedRepo.repository.fullName;
98108
const fileName = createFileName(fullName);
99-
const link = createRelativeLink(fileName, linkType);
100-
summaryFile.content.push(
101-
`| ${fullName} | [${scannedRepo.resultCount} result(s)](${link}) |`,
102-
);
109+
summaries.push({
110+
fileName,
111+
repository: scannedRepo.repository,
112+
resultCount: scannedRepo.resultCount,
113+
});
103114

104115
// Generate individual markdown file for each repository
105116
const resultsFileContent = [`### ${scannedRepo.repository.fullName}`, ""];
@@ -121,7 +132,18 @@ export async function generateVariantAnalysisMarkdown(
121132
content: resultsFileContent,
122133
});
123134
}
124-
return [summaryFile, ...resultsFiles];
135+
136+
// Generate summary file with links to individual files
137+
const summaryFile: MarkdownFile = generateVariantAnalysisMarkdownSummary(
138+
variantAnalysis,
139+
summaries,
140+
linkType,
141+
);
142+
143+
return {
144+
markdownFiles: [summaryFile, ...resultsFiles],
145+
summaries,
146+
};
125147
}
126148

127149
export function generateMarkdownSummary(query: RemoteQuery): MarkdownFile {
@@ -147,6 +169,8 @@ export function generateMarkdownSummary(query: RemoteQuery): MarkdownFile {
147169

148170
export function generateVariantAnalysisMarkdownSummary(
149171
variantAnalysis: VariantAnalysis,
172+
summaries: RepositorySummary[],
173+
linkType: MarkdownLinkType,
150174
): MarkdownFile {
151175
const lines: string[] = [];
152176
// Title
@@ -165,7 +189,14 @@ export function generateVariantAnalysisMarkdownSummary(
165189

166190
// Summary table
167191
lines.push("### Summary", "", "| Repository | Results |", "| --- | --- |");
168-
// nwo and result count will be appended to this table
192+
193+
for (const summary of summaries) {
194+
// Append nwo and results count to the summary table
195+
const fullName = summary.repository.fullName;
196+
const link = createRelativeLink(summary.fileName, linkType);
197+
lines.push(`| ${fullName} | [${summary.resultCount} result(s)](${link}) |`);
198+
}
199+
169200
return {
170201
fileName: "_summary",
171202
content: lines,

0 commit comments

Comments
 (0)