54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package main
|
|
|
|
import (
|
|
"encoding/json"
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"time"
|
|
|
|
realityevaluation "git.cin.su/m/Assistant/tests/reality_evaluation"
|
|
)
|
|
|
|
func main() {
|
|
suitePath := flag.String("suite", "", "path to versioned reality-evaluation suite JSON")
|
|
outputPath := flag.String("output", "", "path to JSON artifact output")
|
|
observedAt := flag.String("observed-at", "2026-08-17T12:00:00Z", "RFC3339 timestamp for reproducible artifact generation")
|
|
flag.Parse()
|
|
if *suitePath == "" || *outputPath == "" {
|
|
fatal(fmt.Errorf("suite and output are required"))
|
|
}
|
|
at, err := time.Parse(time.RFC3339, *observedAt)
|
|
if err != nil {
|
|
fatal(err)
|
|
}
|
|
suite, err := realityevaluation.LoadSuite(*suitePath)
|
|
if err != nil {
|
|
fatal(err)
|
|
}
|
|
artifact, err := realityevaluation.RunSuite(suite, at)
|
|
if err != nil {
|
|
fatal(err)
|
|
}
|
|
payload, err := json.MarshalIndent(artifact, "", " ")
|
|
if err != nil {
|
|
fatal(err)
|
|
}
|
|
payload = append(payload, '\n')
|
|
if err := os.WriteFile(*outputPath, payload, 0o600); err != nil {
|
|
fatal(err)
|
|
}
|
|
reportPath := strings.TrimSuffix(*outputPath, filepath.Ext(*outputPath)) + ".md"
|
|
if err := os.WriteFile(reportPath, []byte(realityevaluation.MarkdownReport(artifact)), 0o600); err != nil {
|
|
fatal(err)
|
|
}
|
|
fmt.Printf("artifact=%s total_cases=%d output=%s report=%s\n", artifact.ArtifactID, artifact.TotalCases, *outputPath, reportPath)
|
|
}
|
|
|
|
func fatal(err error) {
|
|
fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(1)
|
|
}
|