@@ -2,6 +2,7 @@ package formatter
22
33import (
44 "encoding/json"
5+ "fmt"
56 "strings"
67
78 "github.com/conventionalcommit/commitlint/lint"
@@ -14,40 +15,35 @@ type JSONFormatter struct{}
1415func (f *JSONFormatter) Name() string { return "json" }
1516
1617// Format formats the lint.Result
17- func (f *JSONFormatter) Format(res *lint.Result) (string, error) {
18+ func (f *JSONFormatter) Format(result *lint.Result) (string, error) {
1819 output := make(map[string]interface{}, 4)
1920
20- errs, warns, others := bySeverity(res)
21+ output["input"] = result.Input()
22+ output["valid"] = result.IsOK()
23+ output["issues"] = f.formatIssue(result.Issues())
2124
22- output["input"] = res.Input()
23- output["status"] = res.IsOK()
24-
25- output["errors"] = f.formRuleFailure(errs, false)
26- output["warnings"] = f.formRuleFailure(warns, false)
27- output["others"] = f.formRuleFailure(others, true)
28-
29- msg, err := json.Marshal(output)
25+ formatted, err := json.Marshal(output)
3026 if err != nil {
31- return "", err
27+ return "", fmt.Errorf("json formatting failed: %w", err)
3228 }
33- return strings.Trim(string(msg ), "\n"), nil
29+ return strings.Trim(string(formatted ), "\n"), nil
3430}
3531
36- func (f *JSONFormatter) formRuleFailure(res []*lint.Issue, includeSev bool ) []map[string ]interface{} {
37- outs := make([]map[string] interface{}, 0, len(res ))
32+ func (f *JSONFormatter) formatIssue(issues []*lint.Issue) []interface{} {
33+ formattedIssues := make([]interface{}, 0, len(issues ))
3834
39- for _, r := range res {
35+ for _, issue := range issues {
4036 output := make(map[string]interface{})
4137
42- output["name"] = r .Name()
43- output["messages "] = r.Message ()
38+ output["name"] = issue .Name()
39+ output["severity "] = issue.Severity ()
4440
45- if includeSev {
46- output["severity "] = r.Severity ()
41+ if len(issue.Message()) > 0 {
42+ output["messages "] = issue.Message ()
4743 }
4844
49- outs = append(outs , output)
45+ formattedIssues = append(formattedIssues , output)
5046 }
5147
52- return outs
48+ return formattedIssues
5349}
0 commit comments