public void RunUserInputActions()

in src/Cli/func/Actions/UserInputHandler.cs [27:85]


        public void RunUserInputActions(IDictionary<string, string> providedValues, IList<TemplateJobInput> inputs, IDictionary<string, string> variables)
        {
            foreach (var theInput in inputs)
            {
                var userPrompt = _userPrompts.Value.First(x => string.Equals(x.Id, theInput.ParamId, StringComparison.OrdinalIgnoreCase));
                var defaultValue = theInput.DefaultValue ?? userPrompt.DefaultValue;
                string response = null;

                if (providedValues.ContainsKey(theInput.ParamId) && !string.IsNullOrEmpty(providedValues[theInput.ParamId]))
                {
                    response = providedValues[theInput.ParamId];
                }

                if (userPrompt.Value == Constants.UserPromptEnumType || userPrompt.Value == UserPromptBooleanType)
                {
                    var values = new List<string>() { true.ToString(), false.ToString() };
                    if (userPrompt.Value == UserPromptEnumType)
                    {
                        values = userPrompt.EnumList.Select(x => x.Display).ToList();
                    }

                    while (!ValidateResponse(userPrompt, response))
                    {
                        SelectionMenuHelper.DisplaySelectionWizardPrompt(LabelMap(userPrompt.Label));
                        response = SelectionMenuHelper.DisplaySelectionWizard(values);

                        if (string.IsNullOrEmpty(response) && !string.IsNullOrEmpty(defaultValue))
                        {
                            response = defaultValue;
                        }
                        else if (userPrompt.Value == UserPromptEnumType)
                        {
                            response = userPrompt.EnumList.Single(x => x.Display == response).Value;
                        }
                    }
                }
                else
                {
                    while (!ValidateResponse(userPrompt, response))
                    {
                        PrintInputLabel(userPrompt, defaultValue);
                        response = Console.ReadLine();
                        if (string.IsNullOrEmpty(response) && defaultValue != null)
                        {
                            response = defaultValue;
                        }
                    }

                    if (providedValues.ContainsKey(theInput.ParamId))
                    {
                        providedValues[theInput.ParamId] = response;
                    }
                }

                var variableName = theInput.AssignTo;

                variables[variableName] = response;
            }
        }