From 63ea359c009c5b169b1de177f0711ef0e781a05c Mon Sep 17 00:00:00 2001 From: oabrivard Date: Fri, 1 Dec 2023 23:25:27 +0100 Subject: [PATCH] Added command line util to call linter --- cmd/gojson.go | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 cmd/gojson.go diff --git a/cmd/gojson.go b/cmd/gojson.go new file mode 100644 index 0000000..58cb978 --- /dev/null +++ b/cmd/gojson.go @@ -0,0 +1,55 @@ +package main + +import ( + "fmt" + "io" + "os" + + "gitea.paas.celticinfo.fr/oabrivard/gojson/linter" +) + +func isInputFromPipe() bool { + fileInfo, _ := os.Stdin.Stat() + return fileInfo.Mode()&os.ModeCharDevice == 0 +} + +func main() { + var f *os.File + + if isInputFromPipe() { + f = os.Stdin + + } else { + fileName := "" + + if len(os.Args) != 2 { + fmt.Fprintf(os.Stderr, "gojson filename\n") + os.Exit(1) + } else { + fileName = os.Args[1] + } + + var err error + f, err = os.Open(fileName) + if err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + os.Exit(1) + } + defer f.Close() + } + + bytes, err := io.ReadAll(f) + if err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + os.Exit(1) + } + + jl := linter.NewJsonLinter(string(bytes)) + result, err := jl.Lint() + if err != nil { + fmt.Fprintf(os.Stderr, "error: %v\n", err) + os.Exit(1) + } + + fmt.Println(result) +}