You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
864 B
Go

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)
}