diff --git a/cmd/simdata/main.go b/cmd/simdata/main.go new file mode 100644 index 0000000..d188d3f --- /dev/null +++ b/cmd/simdata/main.go @@ -0,0 +1,59 @@ +package main + +import ( + "encoding/json" + "flag" + "fmt" + "os" + + "git.sunturtle.xyz/zephyr/horse/umadump/replay" +) + +func main() { + var out string + flag.StringVar(&out, "o", "", "output `file`") + flag.Parse() + + r := os.Stdin + if flag.NArg() > 0 { + f, err := os.Open(flag.Arg(0)) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(2) + } + r = f + defer f.Close() + } + + w := os.Stdout + if out != "" { + f, err := os.Create(out) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(2) + } + w = f + defer f.Close() + } + + var race replay.Race + d := json.NewDecoder(r) + d.DisallowUnknownFields() + if err := d.Decode(&race); err != nil { + fmt.Fprintln(os.Stderr, "replay:", err) + os.Exit(1) + } + simdata, err := replay.DecodeSim(race.SimDataBase64) + if err != nil { + fmt.Fprintln(os.Stderr, "simdata:", err) + } + + b, err := json.Marshal(simdata) + if err != nil { + panic(err) + } + _, err = w.Write(b) + if err != nil { + fmt.Fprintln(os.Stderr, err) + } +}