1package present
2
3import (
4	"github.com/concourse/concourse/atc"
5	"github.com/concourse/concourse/atc/db"
6)
7
8func Job(
9	teamName string,
10	job db.Job,
11	inputs []atc.JobInput,
12	outputs []atc.JobOutput,
13	finishedBuild db.Build,
14	nextBuild db.Build,
15	transitionBuild db.Build,
16) atc.Job {
17	var presentedNextBuild, presentedFinishedBuild, presentedTransitionBuild *atc.Build
18
19	if nextBuild != nil {
20		presented := Build(nextBuild)
21		presentedNextBuild = &presented
22	}
23
24	if finishedBuild != nil {
25		presented := Build(finishedBuild)
26		presentedFinishedBuild = &presented
27	}
28
29	if transitionBuild != nil {
30		presented := Build(transitionBuild)
31		presentedTransitionBuild = &presented
32	}
33
34	sanitizedInputs := []atc.JobInput{}
35	for _, input := range inputs {
36		sanitizedInputs = append(sanitizedInputs, atc.JobInput{
37			Name:     input.Name,
38			Resource: input.Resource,
39			Passed:   input.Passed,
40			Trigger:  input.Trigger,
41		})
42	}
43
44	sanitizedOutputs := []atc.JobOutput{}
45	for _, output := range outputs {
46		sanitizedOutputs = append(sanitizedOutputs, atc.JobOutput{
47			Name:     output.Name,
48			Resource: output.Resource,
49		})
50	}
51
52	return atc.Job{
53		ID: job.ID(),
54
55		Name:                 job.Name(),
56		PipelineName:         job.PipelineName(),
57		TeamName:             teamName,
58		DisableManualTrigger: job.DisableManualTrigger(),
59		Paused:               job.Paused(),
60		FirstLoggedBuildID:   job.FirstLoggedBuildID(),
61		FinishedBuild:        presentedFinishedBuild,
62		NextBuild:            presentedNextBuild,
63		TransitionBuild:      presentedTransitionBuild,
64		HasNewInputs:         job.HasNewInputs(),
65
66		Inputs:  sanitizedInputs,
67		Outputs: sanitizedOutputs,
68
69		Groups: job.Tags(),
70	}
71}
72