func()

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
}