package main import ( "flag" "log" "os" "github.com/fraktal/mev-beta/tools/bridge" ) func main() { // define subcommands applyCmd := flag.NewFlagSet("apply", flag.ExitOnError) revertCmd := flag.NewFlagSet("revert", flag.ExitOnError) runCmd := flag.NewFlagSet("run", flag.ExitOnError) summarizeCmd := flag.NewFlagSet("summarize", flag.ExitOnError) // apply flags applyPatch := applyCmd.String("patch", "", "Path to patch file") applyBranch := applyCmd.String("branch", "", "Branch name to apply patch") // revert flags revertBranchName := revertCmd.String("branch", "", "Branch name to revert") // run flags runMode := runCmd.String("mode", "", "Execution mode (podman-compose)") // summarize flags summarizeArtifacts := summarizeCmd.String("artifacts", "", "Path to artifacts directory") summarizeOut := summarizeCmd.String("out", "", "Output JSON file path") // parse subcommand if len(os.Args) < 2 { log.Fatal("subcommand required: apply, revert, run, summarize") } switch os.Args[1] { case "apply": applyCmd.Parse(os.Args[2:]) if *applyPatch == "" || *applyBranch == "" { log.Fatal("--patch and --branch are required") } op := bridge.PatchOperation{ PatchFile: *applyPatch, BranchName: *applyBranch, } if err := bridge.ApplyPatch(op); err != nil { log.Fatal(err) } case "revert": revertCmd.Parse(os.Args[2:]) if *revertBranchName == "" { log.Fatal("--branch is required") } if err := bridge.RevertBranch(*revertBranchName); err != nil { log.Fatal(err) } case "run": runCmd.Parse(os.Args[2:]) if *runMode == "podman-compose" { if err := bridge.RunPodmanCompose(); err != nil { log.Fatal(err) } } else { log.Fatalf("unsupported run mode: %s", *runMode) } case "summarize": summarizeCmd.Parse(os.Args[2:]) if *summarizeArtifacts == "" || *summarizeOut == "" { log.Fatal("--artifacts and --out are required") } cfg := bridge.SummarizeConfig{ ArtifactsDir: *summarizeArtifacts, OutputFile: *summarizeOut, } if err := bridge.SummarizeArtifacts(cfg); err != nil { log.Fatal(err) } default: log.Fatalf("unknown subcommand: %s", os.Args[1]) } }