package main import ( "encoding/json" "fmt" "os" flag "github.com/spf13/pflag" "github.com/hjbdev/patterm/internal/harness" ) func runDebugHarness() { var ( scenarioPath = flag.String("scenario", "", "JSON scenario path") pattermBin = flag.String("patterm-bin", "", "patterm binary under test (default: this executable)") ) flag.Parse() if *scenarioPath == "" { die("debug-harness: --scenario is required") } if *pattermBin == "" { exe, err := os.Executable() if err != nil { die("debug-harness: os.Executable: %v", err) } *pattermBin = exe } sc, err := harness.LoadScenario(*scenarioPath) if err != nil { fmt.Fprintf(os.Stdout, "{\"ok\":false,\"error\":%q}\n", err.Error()) os.Exit(2) } enc := json.NewEncoder(os.Stdout) res, err := harness.RunScenario(harness.Options{ Scenario: sc, PattermBin: *pattermBin, }, func(ev harness.Event) { _ = enc.Encode(ev) }) _ = enc.Encode(res) if err != nil { if res.Steps == 0 { os.Exit(2) } os.Exit(1) } }