@@ -18,6 +18,7 @@ import {
1818 VariantAnalysisScannedRepository ,
1919 VariantAnalysisScannedRepositoryResult ,
2020} from "./shared/variant-analysis" ;
21+ import { RepositoryWithMetadata } from "./shared/repository" ;
2122
2223export 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
127149export function generateMarkdownSummary ( query : RemoteQuery ) : MarkdownFile {
@@ -147,6 +169,8 @@ export function generateMarkdownSummary(query: RemoteQuery): MarkdownFile {
147169
148170export 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