func()

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
}