in pkg/prompts/prompts.go [35:85]
func RunPromptsFromConfigWithSkipsIO(draftConfig *config.DraftConfig, Stdin io.ReadCloser, Stdout io.WriteCloser) error {
if draftConfig == nil {
return errors.New("draftConfig is nil")
}
for _, variable := range draftConfig.Variables {
if variable.Value != "" {
log.Debugf("Skipping prompt for %s", variable.Name)
continue
}
if variable.Default.IsPromptDisabled {
log.Debugf("Skipping prompt for %s as it has IsPromptDisabled=true", variable.Name)
noPromptDefaultValue := GetVariableDefaultValue(draftConfig, variable)
if noPromptDefaultValue == "" {
return fmt.Errorf("IsPromptDisabled is true for %s but no default value was found", variable.Name)
}
log.Debugf("Using default value %s for %s", noPromptDefaultValue, variable.Name)
variable.Value = noPromptDefaultValue
continue
}
isVarActive, err := draftConfig.CheckActiveWhenConstraint(variable)
if err != nil {
return fmt.Errorf("unable to check ActiveWhen constraint: %w", err)
}
if !isVarActive {
continue
}
log.Debugf("constructing prompt for: %s", variable.Name)
if variable.Type == "bool" {
input, err := RunBoolPrompt(variable, Stdin, Stdout)
if err != nil {
return err
}
variable.Value = input
} else {
defaultValue := GetVariableDefaultValue(draftConfig, variable)
stringInput, err := RunDefaultableStringPrompt(defaultValue, variable, nil, Stdin, Stdout)
if err != nil {
return err
}
variable.Value = stringInput
}
}
return nil
}