99import { VcsProvider } from '../../utils/git-service.interface' ;
1010import { CodeReviewResult } from '../../providers/provider.types' ;
1111import { CreateReviewCommentParams } from '../../services/services.types' ;
12+ import { Logger } from '../../utils/logger' ;
1213
1314export interface ReviewResults {
1415 branchName ?: CodeReviewResult [ ] ;
@@ -52,12 +53,35 @@ export function printSingleReviewResult(result: CodeReviewResult): void {
5253
5354export function formatReviewResultsAsMarkdown (
5455 results : CodeReviewResult [ ] ,
56+ context ?: {
57+ type ?: string ;
58+ branchName ?: string ;
59+ commits ?: any [ ] ;
60+ prDetails ?: any ;
61+ } ,
5562) : string {
5663 if ( ! Array . isArray ( results ) || results . length === 0 ) {
57- return '## 🤖 ReviewCopilot Report\n\n ✅ No issues found in this review.\n' ;
64+ return '✅ No issues found in this review.\n' ;
5865 }
5966
60- let comment = '## 🤖 ReviewCopilot Report\n\n' ;
67+ let comment = '' ;
68+
69+ if ( context ?. type === 'branchName' && context . branchName ) {
70+ comment += `**Branch:** \`${ context . branchName } \`\n\n` ;
71+ }
72+
73+ if (
74+ context ?. type === 'commitMessages' &&
75+ context . commits &&
76+ context . prDetails
77+ ) {
78+ context . commits . forEach ( ( commit : any ) => {
79+ const sha = commit . hash ;
80+ const url = `https://github.com/${ context . prDetails . owner } /${ context . prDetails . repo } /commit/${ sha } ` ;
81+ comment += `- [[33m${ sha . slice ( 0 , 7 ) } [0m](${ url } ): ${ commit . message } \n` ;
82+ } ) ;
83+ comment += '\n' ;
84+ }
6185
6286 const resultsWithIssues = results . filter (
6387 ( result ) =>
@@ -70,12 +94,12 @@ export function formatReviewResultsAsMarkdown(
7094 resultsWithIssues . forEach ( ( result ) => {
7195 if ( result . suggestions . length > 0 ) {
7296 result . suggestions . forEach ( ( suggestion ) => {
73- comment += `- ${ suggestion . message } \n` ;
97+ comment += `${ suggestion . message } \n` ;
7498 } ) ;
7599 }
76100
77101 if ( result . error ) {
78- comment += `- 🚨 ${ result . error . message } \n` ;
102+ comment += `🚨 ${ result . error . message } \n` ;
79103 }
80104
81105 comment += '\n' ;
@@ -88,19 +112,21 @@ export function formatReviewResultsAsMarkdown(
88112export async function outputReviewResults (
89113 context : ReviewContext ,
90114 results : ReviewResults ,
115+ extraContext ?: { branchName ?: string ; commits ?: any [ ] } ,
91116) : Promise < void > {
92117 context . spinner . text = 'Processing results...' ;
93118
94119 if ( EnvironmentHelpers . isCI ) {
95- await outputToCIPlatform ( context , results ) ;
120+ await outputToCIPlatform ( context , results , extraContext ) ;
96121 } else {
97- await outputToTerminal ( results ) ;
122+ await outputToTerminal ( results , extraContext ) ;
98123 }
99124}
100125
101126export async function outputToCIPlatform (
102127 context : ReviewContext ,
103128 results : ReviewResults ,
129+ extraContext ?: { branchName ?: string ; commits ?: any [ ] } ,
104130) : Promise < void > {
105131 context . spinner . text = 'Posting review comments...' ;
106132
@@ -109,7 +135,10 @@ export async function outputToCIPlatform(
109135 }
110136
111137 if ( results . branchName ) {
112- const body = formatReviewResultsAsMarkdown ( results . branchName ) ;
138+ const body = formatReviewResultsAsMarkdown ( results . branchName , {
139+ type : 'branchName' ,
140+ branchName : extraContext ?. branchName ,
141+ } ) ;
113142
114143 await context . gitService . createIssueComment ( {
115144 owner : context . prDetails . owner ,
@@ -120,7 +149,11 @@ export async function outputToCIPlatform(
120149 }
121150
122151 if ( results . commitMessages ) {
123- const body = formatReviewResultsAsMarkdown ( results . commitMessages ) ;
152+ const body = formatReviewResultsAsMarkdown ( results . commitMessages , {
153+ type : 'commitMessages' ,
154+ commits : extraContext ?. commits ,
155+ prDetails : context . prDetails ,
156+ } ) ;
124157
125158 await context . gitService . createIssueComment ( {
126159 owner : context . prDetails . owner ,
@@ -225,44 +258,78 @@ export async function outputToCIPlatform(
225258 }
226259}
227260
228- export async function outputToTerminal ( results : ReviewResults ) : Promise < void > {
261+ export async function outputToTerminal (
262+ results : ReviewResults ,
263+ extraContext ?: { branchName ?: string ; commits ?: any [ ] ; prDetails ?: any } ,
264+ ) : Promise < void > {
229265 let hasAnyResults = false ;
230266
231267 if ( results . branchName ) {
232- console . log ( chalk . blue ( '\n🌿 Branch Name Review Results:' ) ) ;
233- console . log ( '─' . repeat ( 50 ) ) ;
234- printReviewResultsToTerminal ( results . branchName ) ;
268+ Logger . info ( '\n🌿 Branch Name Review Results:' ) ;
269+ Logger . divider ( ) ;
270+ printReviewResultsToTerminal ( results . branchName , {
271+ type : 'branchName' ,
272+ branchName : extraContext ?. branchName ,
273+ } ) ;
235274 hasAnyResults = true ;
236275 }
237276
238277 if ( results . commitMessages && results . commitMessages . length > 0 ) {
239- console . log ( chalk . blue ( '\n📝 Commit Messages Review Results:' ) ) ;
240- console . log ( '─' . repeat ( 50 ) ) ;
241- printReviewResultsToTerminal ( results . commitMessages ) ;
278+ Logger . info ( '\n📝 Commit Messages Review Results:' ) ;
279+ Logger . divider ( ) ;
280+ printReviewResultsToTerminal ( results . commitMessages , {
281+ type : 'commitMessages' ,
282+ commits : extraContext ?. commits ,
283+ prDetails : extraContext ?. prDetails ,
284+ } ) ;
242285 hasAnyResults = true ;
243286 }
244287
245288 if ( results . codeChanges ) {
246- console . log ( chalk . blue ( '\n🔍 Code Changes Review Results:' ) ) ;
247- console . log ( '─' . repeat ( 50 ) ) ;
289+ Logger . info ( '\n🔍 Code Changes Review Results:' ) ;
290+ Logger . divider ( ) ;
248291 printReviewResultsToTerminal ( results . codeChanges ) ;
249292 hasAnyResults = true ;
250293 }
251294
252295 if ( ! hasAnyResults ) {
253- console . log ( chalk . gray ( '\n📋 No review results to display.' ) ) ;
296+ Logger . gray ( '\n📋 No review results to display.' ) ;
254297 }
255298}
256299
257300export function printReviewResultsToTerminal (
258301 results : CodeReviewResult [ ] ,
302+ context ?: {
303+ type ?: string ;
304+ branchName ?: string ;
305+ commits ?: any [ ] ;
306+ prDetails ?: any ;
307+ } ,
259308) : void {
260309 if ( ! Array . isArray ( results ) || results . length === 0 ) {
261- console . log ( chalk . gray ( '\n📝 No review results to display.\n' ) ) ;
310+ Logger . gray ( '\n📝 No review results to display.\n' ) ;
262311 return ;
263312 }
264313
265- console . log ( '\n📝 Review Results:\n' ) ;
314+ if ( context ?. type === 'branchName' && context . branchName ) {
315+ Logger . success ( `Branch: ${ context . branchName } ` ) ;
316+ }
317+
318+ if (
319+ context ?. type === 'commitMessages' &&
320+ context . commits &&
321+ context . prDetails
322+ ) {
323+ context . commits . forEach ( ( commit : any ) => {
324+ const sha = commit . hash ;
325+ const url = `https://github.com/${ context . prDetails . owner } /${ context . prDetails . repo } /commit/${ sha } ` ;
326+ Logger . yellow ( `[${ sha . slice ( 0 , 7 ) } ] ${ commit . message } ` ) ;
327+ Logger . gray ( url ) ;
328+ } ) ;
329+ Logger . white ( '' ) ;
330+ }
331+
332+ Logger . info ( '\n📝 Review Results:\n' ) ;
266333
267334 results . forEach ( ( result ) => {
268335 printSingleReviewResult ( result ) ;
0 commit comments