func main()

in cmd/testmatrix/main.go [108:189]


func main() {
	args := e2etestrunner.Args{}
	arg.MustParse(&args)

	ctx := context.Background()
	cloudbuildService, err := cloudbuild.NewService(ctx)
	if err != nil {
		panic(err)
	}
	storageClient, err := storage.NewClient(ctx)
	if err != nil {
		panic(err)
	}

	// Don't bother going over pages, just use a large page size and look at the
	// first page
	listTriggersRes, err := cloudbuildService.Projects.Triggers.List(args.ProjectID).
		Context(ctx).
		PageSize(128).
		Do()
	if err != nil {
		panic(err)
	}

	g, egCtx := errgroup.WithContext(ctx)
	results := make([]*result, len(listTriggersRes.Triggers))
	for i, trigger := range listTriggersRes.Triggers {
		i := i
		trigger := trigger
		g.Go(func() error {
			res, err := handleTrigger(egCtx, args.ProjectID, trigger, cloudbuildService, storageClient)
			if err != nil {
				return err
			}
			results[i] = res
			return nil
		})
	}
	if err := g.Wait(); err != nil {
		panic(err)
	}

	repoToPlatformToScenario := map[string]map[string]map[string]status{}
	repoNameSet := map[string]struct{}{}
	scenarioSet := map[string]struct{}{}
	platformSet := map[string]struct{}{}
	for _, result := range results {
		if result == nil || result.Platform == "build" {
			continue
		}

		repoNameSet[result.RepoName] = struct{}{}
		if repoToPlatformToScenario[result.RepoName] == nil {
			repoToPlatformToScenario[result.RepoName] = map[string]map[string]status{}
		}
		platformToScenario := repoToPlatformToScenario[result.RepoName]

		platformToScenario[result.Platform] = result.Statuses
		platformSet[result.Platform] = struct{}{}

		for scenario := range result.Statuses {
			scenarioSet[scenario] = struct{}{}
		}
	}
	repoNames := sortStringSet(repoNameSet)
	scenarios := sortStringSet(scenarioSet)
	platforms := sortStringSet(platformSet)

	template := template.Must(template.New("table").Parse(templateTxt))
	err = template.Execute(os.Stdout, struct {
		RepoNames                []string
		Scenarios                []string
		Platforms                []string
		RepoToPlatformToScenario map[string]map[string]map[string]status
		Pass                     status
		Skip                     status
	}{repoNames, scenarios, platforms, repoToPlatformToScenario, pass, skip})

	if err != nil {
		panic(err)
	}
}