From a67b2c76578f506657d31579928d97c8b2f89d47 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Tue, 10 Dec 2024 17:53:48 -0300 Subject: [PATCH 1/8] Refactor errors on check function --- internal/numscript/numscript.go | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index dac9773..c274aea 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -61,15 +61,10 @@ func check() { if d.Kind.Severity() == analysis.ErrorSeverity { hasErrors = true } - errLevel := SeverityToString(d.Kind.Severity()) - subJsonObj := gabs.New() - subJsonObj.Set(d.Range.Start.Line, "line") - subJsonObj.Set(d.Range.Start.Character, "character") - subJsonObj.Set(errLevel, "level") - subJsonObj.Set(d.Kind.Message(), "error") + logLevel := SeverityToString(d.Kind.Severity()) - jsonObj.ArrayAppend(subJsonObj, "errors") + buildCheckDetails(d, jsonObj, logLevel) } if hasErrors { @@ -81,6 +76,19 @@ func check() { fmt.Println(jsonObj.String()) } + +func buildCheckDetails(diagnostic analysis.Diagnostic, jsonObj *gabs.Container, logLevel string) { + logLevelKey := logLevel + "s" + subJsonObj := gabs.New() + + subJsonObj.Set(diagnostic.Range.Start.Line, "line") + subJsonObj.Set(diagnostic.Range.Start.Character, "character") + subJsonObj.Set(logLevel, "level") + subJsonObj.Set(diagnostic.Kind.Message(), logLevel) + + jsonObj.ArrayAppend(subJsonObj, logLevelKey) +} + var checkCmd = &cobra.Command{ Use: "check", Short: "Check a numscript file", From 754f5c4ddc0969355bc71fa552bc56fb17ecc5aa Mon Sep 17 00:00:00 2001 From: Vinicius Date: Wed, 11 Dec 2024 11:15:28 -0300 Subject: [PATCH 2/8] Remove empty 'errors' field on check array --- internal/numscript/numscript.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index c274aea..3a0c688 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -56,7 +56,6 @@ func check() { hasErrors := false jsonObj := gabs.New() - jsonObj.Array("errors") for _, d := range res.Diagnostics { if d.Kind.Severity() == analysis.ErrorSeverity { hasErrors = true @@ -64,6 +63,8 @@ func check() { logLevel := SeverityToString(d.Kind.Severity()) + fmt.Println(logLevel) + buildCheckDetails(d, jsonObj, logLevel) } From ebe8dca2b7916a786b4bcd5fa811a60530d20c0b Mon Sep 17 00:00:00 2001 From: Vinicius Date: Wed, 11 Dec 2024 11:24:01 -0300 Subject: [PATCH 3/8] Fix check --- internal/numscript/numscript.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index 3a0c688..ba551ad 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -63,8 +63,6 @@ func check() { logLevel := SeverityToString(d.Kind.Severity()) - fmt.Println(logLevel) - buildCheckDetails(d, jsonObj, logLevel) } From 9101d8150963c3852a5c2afba9851f02516dd2c4 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Thu, 12 Dec 2024 14:11:09 -0300 Subject: [PATCH 4/8] Now captures panic exceptions on stderr --- internal/numscript/numscript.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index ba551ad..3f446aa 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -42,8 +42,7 @@ func SeverityToString(s analysis.Severity) string { func check() { dat, err := io.ReadAll(os.Stdin) if err != nil { - os.Stderr.Write([]byte(err.Error())) - os.Exit(1) + panic(err) } res := analysis.CheckSource(string(dat)) @@ -106,7 +105,7 @@ func run() { bytes, err := io.ReadAll(os.Stdin) if err != nil { - panic(err) + panic(err) } err = json.Unmarshal(bytes, &opt) @@ -166,8 +165,12 @@ func main() { rootCmd.AddCommand(checkCmd) rootCmd.AddCommand(runCmd) - if err := rootCmd.Execute(); err != nil { - os.Stderr.Write([]byte(err.Error())) - os.Exit(1) - } + defer func() { + if err := recover(); err != nil { + fmt.Fprintf(os.Stderr, "Exception: %v\n", err) + os.Exit(1) + } + }() + + rootCmd.Execute() } From 62dfd78c2399ab17e01f9b8147dac718a7b4ab4d Mon Sep 17 00:00:00 2001 From: Vinicius Date: Mon, 16 Dec 2024 18:07:29 -0300 Subject: [PATCH 5/8] Now all errors on run command causes a panic --- internal/numscript/numscript.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index 3f446aa..da666b4 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -105,7 +105,7 @@ func run() { bytes, err := io.ReadAll(os.Stdin) if err != nil { - panic(err) + panic(err) } err = json.Unmarshal(bytes, &opt) @@ -132,12 +132,12 @@ func run() { ) if err != nil { - os.Exit(1) + panic(err) } out, err := json.Marshal(result) if err != nil { - os.Exit(1) + panic(err) } os.Stdout.Write(out) From 1a33dbcc54b56329186fa8102562f22e58b34e89 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Mon, 23 Dec 2024 16:27:09 -0300 Subject: [PATCH 6/8] Apply review suggestions --- internal/numscript/numscript.go | 39 +++++++++++++++++---------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index da666b4..ab939e0 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -42,7 +42,8 @@ func SeverityToString(s analysis.Severity) string { func check() { dat, err := io.ReadAll(os.Stdin) if err != nil { - panic(err) + os.Stderr.Write([]byte(err.Error())) + os.Exit(1) } res := analysis.CheckSource(string(dat)) @@ -62,7 +63,7 @@ func check() { logLevel := SeverityToString(d.Kind.Severity()) - buildCheckDetails(d, jsonObj, logLevel) + buildCheckDetails(d, jsonObj, logLevel) } if hasErrors { @@ -74,17 +75,16 @@ func check() { fmt.Println(jsonObj.String()) } - func buildCheckDetails(diagnostic analysis.Diagnostic, jsonObj *gabs.Container, logLevel string) { logLevelKey := logLevel + "s" - subJsonObj := gabs.New() + subJsonObj := gabs.New() - subJsonObj.Set(diagnostic.Range.Start.Line, "line") - subJsonObj.Set(diagnostic.Range.Start.Character, "character") - subJsonObj.Set(logLevel, "level") - subJsonObj.Set(diagnostic.Kind.Message(), logLevel) + subJsonObj.Set(diagnostic.Range.Start.Line, "line") + subJsonObj.Set(diagnostic.Range.Start.Character, "character") + subJsonObj.Set(logLevel, "level") + subJsonObj.Set(diagnostic.Kind.Message(), logLevel) - jsonObj.ArrayAppend(subJsonObj, logLevelKey) + jsonObj.ArrayAppend(subJsonObj, logLevelKey) } var checkCmd = &cobra.Command{ @@ -105,7 +105,8 @@ func run() { bytes, err := io.ReadAll(os.Stdin) if err != nil { - panic(err) + os.Stderr.Write([]byte(err.Error())) + os.Exit(1) } err = json.Unmarshal(bytes, &opt) @@ -132,12 +133,12 @@ func run() { ) if err != nil { - panic(err) + panic(err) } out, err := json.Marshal(result) if err != nil { - panic(err) + panic(err) } os.Stdout.Write(out) @@ -162,15 +163,15 @@ var rootCmd = &cobra.Command{ } func main() { + defer func() { + if err := recover(); err != nil { + fmt.Fprintf(os.Stderr, "Exception: %v\n", err) + os.Exit(1) + } + }() + rootCmd.AddCommand(checkCmd) rootCmd.AddCommand(runCmd) - defer func() { - if err := recover(); err != nil { - fmt.Fprintf(os.Stderr, "Exception: %v\n", err) - os.Exit(1) - } - }() - rootCmd.Execute() } From e29433a867bf1dafa07c5a75ea1f70ff6a4c5cd4 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Mon, 23 Dec 2024 17:36:36 -0300 Subject: [PATCH 7/8] Apply review suggestions --- internal/numscript/numscript.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index ab939e0..ab8fc7e 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -42,7 +42,7 @@ func SeverityToString(s analysis.Severity) string { func check() { dat, err := io.ReadAll(os.Stdin) if err != nil { - os.Stderr.Write([]byte(err.Error())) + os.Stderr.WriteString(err.Error() + "\n") os.Exit(1) } @@ -105,13 +105,14 @@ func run() { bytes, err := io.ReadAll(os.Stdin) if err != nil { - os.Stderr.Write([]byte(err.Error())) + os.Stderr.WriteString(err.Error() + "\n") os.Exit(1) } err = json.Unmarshal(bytes, &opt) if err != nil { - panic(err) + os.Stderr.WriteString(err.Error() + "\n") + os.Exit(1) } parseResult := parser.Parse(opt.Script) @@ -133,12 +134,14 @@ func run() { ) if err != nil { - panic(err) + os.Stderr.WriteString(err.Error() + "\n") + os.Exit(1) } out, err := json.Marshal(result) if err != nil { - panic(err) + os.Stderr.WriteString(err.Error() + "\n") + os.Exit(1) } os.Stdout.Write(out) From 6acab9e7dbe6aa47159892a3b5d9a36b78a693b9 Mon Sep 17 00:00:00 2001 From: Vinicius Date: Thu, 26 Dec 2024 09:49:32 -0300 Subject: [PATCH 8/8] Apply review suggestions --- internal/numscript/numscript.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/numscript/numscript.go b/internal/numscript/numscript.go index ab8fc7e..7ed4bef 100644 --- a/internal/numscript/numscript.go +++ b/internal/numscript/numscript.go @@ -42,7 +42,7 @@ func SeverityToString(s analysis.Severity) string { func check() { dat, err := io.ReadAll(os.Stdin) if err != nil { - os.Stderr.WriteString(err.Error() + "\n") + os.Stderr.Write([]byte(err.Error())) os.Exit(1) } @@ -105,14 +105,14 @@ func run() { bytes, err := io.ReadAll(os.Stdin) if err != nil { - os.Stderr.WriteString(err.Error() + "\n") + os.Stderr.Write([]byte(err.Error())) os.Exit(1) } err = json.Unmarshal(bytes, &opt) if err != nil { - os.Stderr.WriteString(err.Error() + "\n") - os.Exit(1) + os.Stderr.Write([]byte(err.Error())) + os.Exit(1) } parseResult := parser.Parse(opt.Script) @@ -134,14 +134,14 @@ func run() { ) if err != nil { - os.Stderr.WriteString(err.Error() + "\n") - os.Exit(1) + os.Stderr.Write([]byte(err.Error())) + os.Exit(1) } out, err := json.Marshal(result) if err != nil { - os.Stderr.WriteString(err.Error() + "\n") - os.Exit(1) + os.Stderr.Write([]byte(err.Error())) + os.Exit(1) } os.Stdout.Write(out)