MCPcopy Create free account
hub / github.com/OctopusDeploy/cli / AskQuestions

Function AskQuestions

pkg/cmd/release/deploy/deploy.go:376–629  ·  view source on GitHub ↗
(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, space *spaces.Space, options *executor.TaskOptionsDeployRelease, now func() time.Time)

Source from the content-addressed store, hash-verified

374}
375
376func AskQuestions(octopus *octopusApiClient.Client, stdout io.Writer, asker question.Asker, space *spaces.Space, options *executor.TaskOptionsDeployRelease, now func() time.Time) error {
377 if octopus == nil {
378 return cliErrors.NewArgumentNullOrEmptyError("octopus")
379 }
380 if asker == nil {
381 return cliErrors.NewArgumentNullOrEmptyError("asker")
382 }
383 if options == nil {
384 return cliErrors.NewArgumentNullOrEmptyError("options")
385 }
386 // Note: we don't get here at all if no-prompt is enabled, so we know we are free to ask questions
387
388 // Note on output: survey prints things; if the option is specified already from the command line,
389 // we should emulate that so there is always a line where you can see what the item was when specified on the command line,
390 // however if we support a "quiet mode" then we shouldn't emit those
391
392 var err error
393
394 // select project
395 var selectedProject *projects.Project
396 if options.ProjectName == "" {
397 selectedProject, err = selectors.Project("Select project", octopus, asker)
398 if err != nil {
399 return err
400 }
401 } else { // project name is already provided, fetch the object because it's needed for further questions
402 selectedProject, err = selectors.FindProject(octopus, options.ProjectName)
403 if err != nil {
404 return err
405 }
406 _, _ = fmt.Fprintf(stdout, "Project %s\n", output.Cyan(selectedProject.Name))
407 }
408 options.ProjectName = selectedProject.Name
409
410 isTenanted, err := determineIsTenanted(selectedProject, asker)
411 if err != nil {
412 return err
413 }
414
415 err = validateDeployment(isTenanted, options.Environments)
416 if err != nil {
417 return err
418 }
419
420 // select release
421
422 var selectedRelease *releases.Release
423 var selectedChannel *channels.Channel
424 if options.ReleaseVersion == "" {
425 // first we want to ask them to pick a channel just to narrow down the search space for releases (not sent to server)
426 selectedChannel, err = selectors.Channel(octopus, asker, stdout, "Select channel", selectedProject)
427 if err != nil {
428 return err
429 }
430 selectedRelease, err = selectRelease(octopus, asker, "Select a release to deploy", space, selectedProject, selectedChannel)
431 if err != nil {
432 return err
433 }

Callers 2

deployRunFunction · 0.70

Calls 15

ProjectFunction · 0.92
FindProjectFunction · 0.92
CyanFunction · 0.92
ChannelFunction · 0.92
IsToggleEnabledFunction · 0.92
FindEnvironmentsFunction · 0.92
SliceTransformFunction · 0.92
SliceFilterFunction · 0.92
AskExcludedStepsFunction · 0.92
AskGuidedFailureModeFunction · 0.92
AskPackageDownloadFunction · 0.92
determineIsTenantedFunction · 0.85

Tested by 1