Files
browser/plugins/examples/scum-server-plugin/companion/cmd/scum-companion-smoke/main.go
T
2026-07-20 16:42:33 +08:00

52 lines
1.3 KiB
Go

package main
import (
"context"
"encoding/json"
"os"
"time"
companion "browser.local/plugins/scum-server-plugin/companion"
)
func main() {
result := companion.SmokeResult{CompletedCommandIDs: []string{}, UnsupportedCommandIDs: []string{}}
if len(os.Args) != 1 {
writeResult(result)
os.Exit(1)
}
file, err := os.Open("config.yaml")
if err != nil {
writeResult(result)
os.Exit(1)
}
config, err := companion.LoadConfig(file)
closeErr := file.Close()
if err != nil || closeErr != nil {
writeResult(result)
os.Exit(1)
}
client, err := companion.NewClient(config, companion.Options{})
if err != nil {
writeResult(result)
os.Exit(1)
}
_ = os.Unsetenv(companion.ProofEnvironment)
isolated := os.Getenv(companion.SmokeIsolationEnvironment) == companion.SmokeIsolationValue
requestBudget := time.Duration(config.Timing.RequestTimeoutSeconds) * time.Second * time.Duration(2*companion.SmokeClaimLimit+4)
if requestBudget > 45*time.Second {
requestBudget = 45 * time.Second
}
ctx, cancel := context.WithTimeout(context.Background(), requestBudget)
defer cancel()
result, err = companion.RunOneShotSmoke(ctx, client, companion.SmokeOptions{IsolatedNonProduction: isolated})
writeResult(result)
if err != nil {
os.Exit(1)
}
}
func writeResult(result companion.SmokeResult) {
_ = json.NewEncoder(os.Stdout).Encode(result)
}