in k8s-bench/main.go [227:281]
func runAnalyze() error {
config := AnalyzeConfig{
InputDir: "",
OutputFormat: "markdown",
}
// Set custom usage for 'analyze' subcommand
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Usage: %s analyze --input-dir <directory> [options]\n\n", os.Args[0])
fmt.Fprintf(os.Stderr, "Analyze results from previous K8s-bench runs.\n\n")
fmt.Fprintf(os.Stderr, "Options:\n")
flag.PrintDefaults()
}
var resultsFilePath string
flag.StringVar(&config.InputDir, "input-dir", config.InputDir, "Directory containing evaluation results (required)")
flag.StringVar(&config.OutputFormat, "output-format", config.OutputFormat, "Output format (markdown or json)")
flag.BoolVar(&config.IgnoreToolUseShim, "ignore-tool-use-shim", true, "Ignore tool use shim")
flag.StringVar(&resultsFilePath, "results-filepath", "", "Optional file path to write results to")
flag.Parse()
// Check if input-dir is provided
if config.InputDir == "" {
flag.Usage()
return fmt.Errorf("--input-dir is required")
}
// Check if output format is valid
if config.OutputFormat != "markdown" && config.OutputFormat != "json" {
return fmt.Errorf("invalid output format: %s, valid options are 'markdown' or 'json'", config.OutputFormat)
}
// Check if input directory exists
if _, err := os.Stat(config.InputDir); os.IsNotExist(err) {
return fmt.Errorf("input directory does not exist: %s", config.InputDir)
}
allResults, err := collectResults(config.InputDir)
if err != nil {
return fmt.Errorf("collecting results: %w", err)
}
// Format and output results
if config.OutputFormat == "markdown" {
if err := printMarkdownResults(config, allResults, resultsFilePath); err != nil {
return fmt.Errorf("printing markdown results: %w", err)
}
} else {
if err := printJSONResults(allResults, resultsFilePath); err != nil {
return fmt.Errorf("printing JSON results: %w", err)
}
}
return nil
}