in command-runner/pkg/features/depends_on.go [99:121]
func (ph *progressHandle) IsReady(dependsOn ...string) (bool, error) {
ready := true
var group string
if strings.Contains(ph.planID, "@") {
parts := strings.Split(ph.planID, "@")
group = parts[0]
}
for _, dependency := range dependsOn {
for _, f := range ph.pt.failed {
if f == dependency || f == fmt.Sprintf("%s@%s", group, dependency) || strings.HasPrefix(f, fmt.Sprintf("%s@", dependency)) {
return false, common.NewWarning("cancelled %s: dependency %s failed", ph.planID, dependency)
}
}
for _, p := range ph.pt.pending {
if p == dependency || p == fmt.Sprintf("%s@%s", group, dependency) || strings.HasPrefix(p, fmt.Sprintf("%s@", dependency)) {
ready = false
log.Debug().Msgf("DEFER [%s] for dependency [%s]", ph.planID, p)
break
}
}
}
return ready, nil
}