in pkg/config/draftconfig.go [291:332]
func (d *DraftConfig) CheckActiveWhenConstraint(variable *BuilderVar) (bool, error) {
if len(variable.ActiveWhenConstraints) > 0 {
isVarActive := true
for _, activeWhen := range variable.ActiveWhenConstraints {
refVar, err := d.GetVariable(activeWhen.VariableName)
if err != nil {
return false, fmt.Errorf("unable to get ActiveWhen reference variable: %w", err)
}
checkValue := refVar.Value
if checkValue == "" {
if refVar.Default.Value != "" {
checkValue = refVar.Default.Value
}
if refVar.Default.ReferenceVar != "" {
refValue, err := d.recurseReferenceVars(refVar, refVar, true)
if err != nil {
return false, err
}
if refValue == "" {
return false, errors.New("reference variable has no value")
}
checkValue = refValue
}
}
switch activeWhen.Condition {
case EqualTo:
isVarActive = checkValue == activeWhen.Value
case NotEqualTo:
isVarActive = checkValue != activeWhen.Value
default:
return false, fmt.Errorf("invalid activeWhen condition: %s", activeWhen.Condition)
}
}
return isVarActive, nil
}
return true, nil
}