@@ -19,6 +19,7 @@ package platform
19
19
import (
20
20
"fmt"
21
21
"github.com/JetBrains/qodana-cli/v2024/sarif"
22
+ cienvironment "github.com/cucumber/ci-environment/go"
22
23
"os"
23
24
"strings"
24
25
@@ -108,14 +109,14 @@ func SuccessMessage(message string, a ...interface{}) {
108
109
func WarningMessage (message string , a ... interface {}) {
109
110
message = fmt .Sprintf (message , a ... )
110
111
icon := warningStyle .Sprint ("\n ! " )
111
- pterm .Println (icon , Primary (message ))
112
+ pterm .Println (formatMessageForCI ( icon , Primary (message ) ))
112
113
}
113
114
114
115
// ErrorMessage prints an error message with the icon.
115
116
func ErrorMessage (message string , a ... interface {}) {
116
117
message = fmt .Sprintf (message , a ... )
117
118
icon := errorStyle .Sprint ("✗ " )
118
- pterm .Println (icon , errorStyle .Sprint (message ))
119
+ pterm .Println (formatMessageForCI ( icon , errorStyle .Sprint (message ) ))
119
120
}
120
121
121
122
// PrintLinterLog prints the linter logs with color, when needed.
@@ -277,3 +278,18 @@ func getProblemsFoundMessage(newProblems int) string {
277
278
return fmt .Sprintf ("Found %d new problems according to the checks applied" , newProblems )
278
279
}
279
280
}
281
+
282
+ // formatMessageForCI formats the message for the CI environment.
283
+ func formatMessageForCI (level , format string , a ... interface {}) string {
284
+ message := fmt .Sprintf (format , a ... )
285
+ ci := cienvironment .DetectCIEnvironment ()
286
+ name := getCIName (ci )
287
+ if name == "github-actions" {
288
+ return fmt .Sprintf ("::%s::%s" , level , message )
289
+ } else if strings .HasPrefix (name , "azure" ) {
290
+ return fmt .Sprintf ("##vso[task.logissue type=%s]%s" , level , message )
291
+ } else if strings .HasPrefix (name , "circleci" ) {
292
+ return fmt .Sprintf ("echo '%s: %s'" , level , message )
293
+ }
294
+ return message
295
+ }
0 commit comments