Files
act_runner/pkg/exprparser/functions.go
2025-10-06 13:53:15 +02:00

57 lines
1.3 KiB
Go

package exprparser
import "github.com/actions-oss/act-cli/pkg/model"
func (impl *interperterImpl) getNeedsTransitive(job *model.Job) []string {
needs := job.Needs()
for _, need := range needs {
parentNeeds := impl.getNeedsTransitive(impl.config.Run.Workflow.GetJob(need))
needs = append(needs, parentNeeds...)
}
return needs
}
func (impl *interperterImpl) always() (interface{}, error) {
return true, nil
}
func (impl *interperterImpl) jobSuccess() (interface{}, error) {
jobs := impl.config.Run.Workflow.Jobs
jobNeeds := impl.getNeedsTransitive(impl.config.Run.Job())
for _, needs := range jobNeeds {
if jobs[needs].Result != "success" {
return false, nil
}
}
return true, nil
}
func (impl *interperterImpl) stepSuccess() (interface{}, error) {
return impl.env.Job.Status == "success", nil
}
func (impl *interperterImpl) jobFailure() (interface{}, error) {
jobs := impl.config.Run.Workflow.Jobs
jobNeeds := impl.getNeedsTransitive(impl.config.Run.Job())
for _, needs := range jobNeeds {
if jobs[needs].Result == "failure" {
return true, nil
}
}
return false, nil
}
func (impl *interperterImpl) stepFailure() (interface{}, error) {
return impl.env.Job.Status == "failure", nil
}
func (impl *interperterImpl) cancelled() (interface{}, error) {
return impl.env.Job.Status == "cancelled", nil
}