package main import ( "context" "flag" "fmt" "os" "os/signal" "path/filepath" "zombiezen.com/go/sqlite" "zombiezen.com/go/sqlite/sqlitex" ) func main() { var ( mdb string out string ) flag.StringVar(&mdb, "mdb", os.ExpandEnv(`$USERPROFILE\AppData\LocalLow\Cygames\Umamusume\master\master.mdb`), "`path` to Umamusume master.mdb") flag.StringVar(&out, "kk", `.\horse`, "existing `dir`ectory for output Koka files") flag.Parse() ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt) go func() { <-ctx.Done() stop() }() t, err := LoadTemplates() if err != nil { fmt.Fprintf(os.Stderr, "loading templates: %s\n", err) os.Exit(2) } db, err := sqlitex.NewPool(mdb, sqlitex.PoolOptions{Flags: sqlite.OpenReadOnly}) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } charas, err := Characters(ctx, db) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } pairs, err := CharacterPairs(ctx, db) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } trios, err := CharacterTrios(ctx, db) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } cf, err := os.Create(filepath.Join(out, "character.kk")) if err != nil { fmt.Fprintln(os.Stderr, err) os.Exit(1) } if err := ExecCharacterKK(t, cf, charas, pairs, trios); err != nil { fmt.Fprintln(os.Stderr, err) // continue on } }