func FetchTemplateData(client concourse.Client) (TemplateData, error) { builds, err := client.AllBuilds() if err != nil { return TemplateData{}, err } return TemplateData{ Builds: PresentBuilds(builds), }, nil }
func GetBuild(client concourse.Client, jobName string, buildNameOrID string, pipelineName string) (atc.Build, error) { if pipelineName != "" && jobName == "" { log.Fatalln("job must be specified if pipeline is specified") } if pipelineName == "" && jobName != "" { log.Fatalln("pipeline must be specified if job is specified") } if buildNameOrID != "" { var build atc.Build var err error var found bool if jobName != "" { build, found, err = client.JobBuild(pipelineName, jobName, buildNameOrID) } else { build, found, err = client.Build(buildNameOrID) } if err != nil { return atc.Build{}, fmt.Errorf("failed to get build %s", err) } if !found { return atc.Build{}, errors.New("build not found") } return build, nil } else if jobName != "" { job, found, err := client.Job(pipelineName, jobName) if err != nil { return atc.Build{}, fmt.Errorf("failed to get job %s", err) } if !found { return atc.Build{}, errors.New("job not found") } if job.NextBuild != nil { return *job.NextBuild, nil } else if job.FinishedBuild != nil { return *job.FinishedBuild, nil } else { return atc.Build{}, errors.New("job has no builds") } } else { allBuilds, err := client.AllBuilds() if err != nil { return atc.Build{}, fmt.Errorf("failed to get builds %s", err) } for _, build := range allBuilds { if build.JobName == "" { return build, nil } } return atc.Build{}, errors.New("no builds match job") } }