mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2026-05-13 22:40:24 +00:00
- Go has a suite of small linters that helps with modernizing Go code by using newer functions and catching small mistakes, https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/modernize. - Enable this linter in golangci-lint. - There's also [`go fix`](https://go.dev/blog/gofix), which is not yet released as a linter in golangci-lint: https://github.com/golangci/golangci-lint/pull/6385 Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/11936 Reviewed-by: Mathieu Fenniak <mfenniak@noreply.codeberg.org> Co-authored-by: Gusted <postmaster@gusted.xyz> Co-committed-by: Gusted <postmaster@gusted.xyz>
37 lines
861 B
Go
37 lines
861 B
Go
// Copyright 2024 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package actions
|
|
|
|
import (
|
|
"slices"
|
|
|
|
actions_model "forgejo.org/models/actions"
|
|
"forgejo.org/modules/container"
|
|
)
|
|
|
|
// GetAllRerunJobs get all jobs that need to be rerun when job should be rerun
|
|
func GetAllRerunJobs(job *actions_model.ActionRunJob, allJobs []*actions_model.ActionRunJob) []*actions_model.ActionRunJob {
|
|
rerunJobs := []*actions_model.ActionRunJob{job}
|
|
rerunJobsIDSet := make(container.Set[string])
|
|
rerunJobsIDSet.Add(job.JobID)
|
|
|
|
for {
|
|
found := false
|
|
for _, j := range allJobs {
|
|
if rerunJobsIDSet.Contains(j.JobID) {
|
|
continue
|
|
}
|
|
if slices.ContainsFunc(j.Needs, rerunJobsIDSet.Contains) {
|
|
found = true
|
|
rerunJobs = append(rerunJobs, j)
|
|
rerunJobsIDSet.Add(j.JobID)
|
|
}
|
|
}
|
|
if !found {
|
|
break
|
|
}
|
|
}
|
|
|
|
return rerunJobs
|
|
}
|