This implementation of cmd/msrfetch is only temporary, used to fetch the testdata. At this point we have all metadata present in the repo and all that is left is to fetch the media. Signed-off-by: Yonah <contrib@gensokyo.uk>
53 lines
983 B
Go
53 lines
983 B
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"encoding/json"
|
|
"flag"
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
"git.gensokyo.uk/yonah/monstersirenfetch"
|
|
)
|
|
|
|
func main() {
|
|
log.SetFlags(0)
|
|
log.SetPrefix("msrfetch: ")
|
|
flag.Parse()
|
|
|
|
if flag.NArg() < 1 {
|
|
log.Fatal("no subcommand specified")
|
|
}
|
|
|
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
|
|
defer stop()
|
|
|
|
switch flag.Args()[0] {
|
|
case "enrich":
|
|
mustEnrich(ctx)
|
|
}
|
|
|
|
}
|
|
|
|
func mustWriteJSON(pathname string, v any) {
|
|
if w, err := os.Create(pathname); err != nil {
|
|
log.Fatal(err)
|
|
} else if err = monstersirenfetch.NewEncoder(w).Encode(v); err != nil {
|
|
log.Fatal(err)
|
|
} else if err = w.Close(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func mustReadJSON(pathname string, v any) {
|
|
if r, err := os.OpenFile(pathname, os.O_RDONLY, 0); err != nil {
|
|
log.Fatal(err)
|
|
} else if err = json.NewDecoder(r).Decode(v); err != nil {
|
|
log.Fatal(err)
|
|
} else if err = r.Close(); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|