(octopus *octopusApiClient.Client, variablesFromCmd map[string]string, asker question.Asker, spaceID string, releaseID string, deploymentPreviewsReqests []deployments.DeploymentPreviewRequest)
| 817 | } |
| 818 | |
| 819 | func askDeploymentPreviewVariables(octopus *octopusApiClient.Client, variablesFromCmd map[string]string, asker question.Asker, spaceID string, releaseID string, deploymentPreviewsReqests []deployments.DeploymentPreviewRequest) (map[string]string, error) { |
| 820 | previews, err := deployments.GetReleaseDeploymentPreviews(octopus, spaceID, releaseID, deploymentPreviewsReqests, true) |
| 821 | if err != nil { |
| 822 | return nil, err |
| 823 | } |
| 824 | |
| 825 | flattenedValues := make(map[string]string) |
| 826 | flattenedControls := make(map[string]*deployments.Control) |
| 827 | for _, preview := range previews { |
| 828 | for _, element := range preview.Form.Elements { |
| 829 | flattenedControls[element.Name] = element.Control |
| 830 | } |
| 831 | for key, value := range preview.Form.Values { |
| 832 | flattenedValues[key] = value |
| 833 | } |
| 834 | } |
| 835 | |
| 836 | result := make(map[string]string) |
| 837 | lcaseVarsFromCmd := make(map[string]string, len(variablesFromCmd)) |
| 838 | for k, v := range variablesFromCmd { |
| 839 | lcaseVarsFromCmd[strings.ToLower(k)] = v |
| 840 | } |
| 841 | |
| 842 | keys := maps.Keys(flattenedControls) |
| 843 | sort.Slice(keys, func(i, j int) bool { |
| 844 | return keys[i] > keys[j] |
| 845 | }) |
| 846 | |
| 847 | for _, key := range keys { |
| 848 | control := flattenedControls[key] |
| 849 | valueFromCmd, foundValueOnCommandLine := lcaseVarsFromCmd[strings.ToLower(control.Name)] |
| 850 | if foundValueOnCommandLine { |
| 851 | // implicitly fixes up variable casing |
| 852 | result[control.Name] = valueFromCmd |
| 853 | } |
| 854 | if control.Required == true && !foundValueOnCommandLine { |
| 855 | |
| 856 | defaultValue := flattenedValues[key] |
| 857 | isSensitive := control.DisplaySettings.ControlType == "Sensitive" |
| 858 | promptMessage := control.Name |
| 859 | |
| 860 | if control.Description != "" { |
| 861 | promptMessage = fmt.Sprintf("%s (%s)", promptMessage, control.Description) // we'd like to dim the description, but survey overrides this, so we can't |
| 862 | } |
| 863 | |
| 864 | responseString, err := executionscommon.AskVariableSpecificPrompt(asker, promptMessage, control.Type, defaultValue, control.Required, isSensitive, control.DisplaySettings) |
| 865 | if err != nil { |
| 866 | return nil, err |
| 867 | } |
| 868 | result[control.Name] = responseString |
| 869 | } |
| 870 | } |
| 871 | |
| 872 | return result, nil |
| 873 | } |
| 874 | |
| 875 | func promptMissingPackages(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, release *releases.Release) bool { |
| 876 | missingPackages, err := releases.GetMissingPackages(octopus, release) |
no test coverage detected