// bake renders Android APK assets and agent builtin config for a forge run. package main import ( "flag" "fmt" "os" "path/filepath" "aetherforge-android-forge/internal/forge" ) func main() { worker := flag.String("worker", "", "agent worker name") server := flag.String("server", "", "command deck URL (http/https)") secret := flag.String("fleet-secret", "", "fleet secret (optional; prefer env AETHERFORGE_FLEET_SECRET)") wallet := flag.String("wallet", "", "placeholder wallet (mining off by default)") buildID := flag.String("build-id", "android-dev", "build id stamped into config") configOut := flag.String("config-out", "", "write assets/config.json here") builtinOut := flag.String("builtin-out", "", "write agent/config/builtin.go here") flag.Parse() cfg := forge.AndroidAgentDefaults() if *worker != "" { cfg.WorkerName = *worker } if *server != "" { cfg.ServerURL = *server } if *secret != "" { cfg.FleetSecret = *secret } else if v := os.Getenv("AETHERFORGE_FLEET_SECRET"); v != "" { cfg.FleetSecret = v } if *wallet != "" { cfg.Wallet = *wallet } if *buildID != "" { cfg.BuildID = *buildID } if *configOut != "" { json, err := forge.RenderConfigJSON(cfg) if err != nil { exitErr(err) } if err := writeFile(*configOut, json); err != nil { exitErr(err) } fmt.Fprintf(os.Stderr, "wrote %s\n", *configOut) } if *builtinOut != "" { src, err := forge.RenderBuiltinGo(cfg) if err != nil { exitErr(err) } if err := writeFile(*builtinOut, src); err != nil { exitErr(err) } fmt.Fprintf(os.Stderr, "wrote %s\n", *builtinOut) } if *configOut == "" && *builtinOut == "" { fmt.Fprintln(os.Stderr, "specify -config-out and/or -builtin-out") os.Exit(2) } } func writeFile(path, body string) error { if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil { return err } return os.WriteFile(path, []byte(body), 0644) } func exitErr(err error) { fmt.Fprintf(os.Stderr, "bake error: %v\n", err) os.Exit(1) }