blob: 842bac66e45e636e0837031960bd17a88dde459e [file] [log] [blame]
// Program to generate TypeScript definition files for Goland structs that are
// serialized to JSON for the web UI.
package main
import (
"io"
"github.com/skia-dev/go2ts"
"go.skia.org/infra/go/sklog"
"go.skia.org/infra/go/util"
"go.skia.org/infra/perf/go/alerts"
"go.skia.org/infra/perf/go/cid"
"go.skia.org/infra/perf/go/clustering2"
"go.skia.org/infra/perf/go/dataframe"
"go.skia.org/infra/perf/go/dryrun"
"go.skia.org/infra/perf/go/frontend"
"go.skia.org/infra/perf/go/regression"
"go.skia.org/infra/perf/go/stepfit"
"go.skia.org/infra/perf/go/types"
)
func addMultiple(generator *go2ts.Go2TS, instances []interface{}) error {
for _, inst := range instances {
err := generator.Add(inst)
if err != nil {
return err
}
}
return nil
}
type unionAndName struct {
v interface{}
typeName string
}
func addMultipleUnions(generator *go2ts.Go2TS, unions []unionAndName) error {
for _, u := range unions {
if err := generator.AddUnionWithName(u.v, u.typeName); err != nil {
return err
}
}
return nil
}
func main() {
generator := go2ts.New()
err := addMultiple(generator, []interface{}{
alerts.Alert{},
cid.CommitDetail{},
clustering2.ClusterSummary{},
clustering2.ValuePercent{},
dataframe.FrameRequest{},
dataframe.FrameResponse{},
dryrun.DryRunStatus{},
dryrun.StartDryRunRequest{},
dryrun.StartDryRunResponse{},
dryrun.UIDomain{},
frontend.ClusterStartResponse{},
frontend.ClusterStatus{},
frontend.CommitDetailsRequest{},
frontend.CountHandlerRequest{},
frontend.CountHandlerResponse{},
frontend.RangeRequest{},
frontend.RegressionRangeRequest{},
frontend.RegressionRangeResponse{},
frontend.SkPerfConfig{},
frontend.TriageRequest{},
frontend.TriageResponse{},
frontend.TryBugRequest{},
frontend.TryBugResponse{},
regression.Current{},
regression.FullSummary{},
regression.RegressionDetectionRequest{},
regression.TriageStatus{},
})
if err != nil {
sklog.Fatal(err)
}
err = addMultipleUnions(generator, []unionAndName{
{alerts.AllConfigState, "ConfigState"},
{alerts.AllDirections, "Direction"},
{dataframe.AllRequestType, "RequestType"},
{frontend.AllRegressionSubset, "Subset"},
{regression.AllProcessState, "ProcessState"},
{regression.AllStatus, "Status"},
{stepfit.AllStepFitStatus, "StepFitStatus"},
{types.AllClusterAlgos, "ClusterAlgo"},
{types.AllStepDetections, "StepDetection"},
})
err = util.WithWriteFile("./modules/json/index.ts", func(w io.Writer) error {
return generator.Render(w)
})
if err != nil {
sklog.Fatal(err)
}
}