// Package tomljson is a program that converts TOML to JSON. // // Usage: // cat file.toml | tomljson > file.json // tomljson file.toml > file.json package main import ( "encoding/json" "errors" "fmt" "io" "github.com/pelletier/go-toml/v2" "github.com/pelletier/go-toml/v2/internal/cli" ) func main() { usage := `tomljson can be used in two ways: Reading from stdin: cat file.toml | tomljson > file.json Reading from a file: tomljson file.toml > file.json ` cli.Execute(usage, convert) } func convert(r io.Reader, w io.Writer) error { var v interface{} d := toml.NewDecoder(r) err := d.Decode(&v) if err != nil { var derr *toml.DecodeError if errors.As(err, &derr) { row, col := derr.Position() return fmt.Errorf("%s\nerror occurred at row %d column %d", derr.String(), row, col) } return err } e := json.NewEncoder(w) e.SetIndent("", " ") return e.Encode(v) }