github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/util/jobs/job.go (about) 1 package jobs 2 3 type RunnerJobRef *RunnerJob 4 5 type RunnerJob struct { 6 Id string 7 Job Job 8 Done bool 9 // FIXME: lock/mutex 10 Depends []RunnerJobRef 11 Sub []Job 12 } 13 14 type RunnerJobList []RunnerJobRef 15 16 func NewJob(id JobId, job Job) (RunnerJobRef, error) { 17 if err := job.JobPrepare(id); err != nil { 18 return nil, err 19 } 20 21 sub, err := job.JobSub() 22 if err != nil { 23 return nil, err 24 } 25 26 rj := RunnerJob{ 27 Id: id, 28 Job: job, 29 Sub: sub, 30 } 31 return &rj, nil 32 } 33 34 func (rj RunnerJob) Run() error { 35 return rj.Job.JobRun() 36 } 37 38 func (rj RunnerJob) Runnable() bool { 39 for _, walk := range rj.Depends { 40 if !walk.Done { 41 return false 42 } 43 } 44 return true 45 }