gotoml-test-decoder: add toml-test decoder command (#619)

This commit is contained in:
Cameron Moore
2021-10-14 07:14:34 -05:00
committed by GitHub
parent e96746311c
commit d25eec183f
2 changed files with 36 additions and 4 deletions
+30
View File
@@ -0,0 +1,30 @@
package main
import (
"flag"
"log"
"os"
"path"
"github.com/pelletier/go-toml/v2/testsuite"
)
func main() {
log.SetFlags(0)
flag.Usage = usage
flag.Parse()
if flag.NArg() != 0 {
flag.Usage()
}
err := testsuite.DecodeStdin()
if err != nil {
log.Fatal(err)
}
}
func usage() {
log.Printf("Usage: %s < toml-file\n", path.Base(os.Args[0]))
flag.PrintDefaults()
os.Exit(1)
}
+6 -4
View File
@@ -4,7 +4,7 @@ package testsuite
import ( import (
"encoding/json" "encoding/json"
"log" "fmt"
"os" "os"
"github.com/pelletier/go-toml/v2" "github.com/pelletier/go-toml/v2"
@@ -33,16 +33,18 @@ func ValueToTaggedJSON(doc interface{}) ([]byte, error) {
// DecodeStdin is a helper function for the toml-test binary interface. TOML input // DecodeStdin is a helper function for the toml-test binary interface. TOML input
// is read from STDIN and a resulting tagged JSON representation is written to // is read from STDIN and a resulting tagged JSON representation is written to
// STDOUT. // STDOUT.
func DecodeStdin() { func DecodeStdin() error {
var decoded map[string]interface{} var decoded map[string]interface{}
if err := toml.NewDecoder(os.Stdin).Decode(&decoded); err != nil { if err := toml.NewDecoder(os.Stdin).Decode(&decoded); err != nil {
log.Fatalf("Error decoding TOML: %s", err) return fmt.Errorf("Error decoding TOML: %s", err)
} }
j := json.NewEncoder(os.Stdout) j := json.NewEncoder(os.Stdout)
j.SetIndent("", " ") j.SetIndent("", " ")
if err := j.Encode(addTag("", decoded)); err != nil { if err := j.Encode(addTag("", decoded)); err != nil {
log.Fatalf("Error encoding JSON: %s", err) fmt.Errorf("Error encoding JSON: %s", err)
} }
return nil
} }