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

Function deleteRun

pkg/cmd/release/delete/delete.go:65–184  ·  view source on GitHub ↗
(cmd *cobra.Command, f factory.Factory, flags *Flags, args []string)

Source from the content-addressed store, hash-verified

63}
64
65func deleteRun(cmd *cobra.Command, f factory.Factory, flags *Flags, args []string) error {
66 // command line arg interpretation depends on which flags are present.
67 // e.g. `release delete -p MyProject -v 2.0` means we don't need to look at args at
68 // e.g. `release delete -p MyProject 2.0` means args[0] is the version
69 // e.g. `release delete MyProject -v 2.0` means args[0] is the project
70 // e.g. `release delete MyProject 2.0` means args[0] is the project and args[1] is the version
71 projectNameOrID := flags.Project.Value
72 versionsToDelete := flags.Version.Value
73
74 possibleVersionArgs := args
75 if projectNameOrID == "" && len(args) > 0 {
76 projectNameOrID = args[0]
77 possibleVersionArgs = args[1:] // we've consumed this arg, take it out of consideration for a version
78 }
79 for _, a := range possibleVersionArgs {
80 versionsToDelete = append(versionsToDelete, a)
81 }
82
83 // now off we go
84 octopus, err := f.GetSpacedClient(apiclient.NewRequester(cmd))
85 if err != nil {
86 return err
87 }
88
89 var selectedProject *projects.Project
90 var releasesToDelete []*releases.Release
91
92 if f.IsPromptEnabled() { // this would be AskQuestions if it were bigger
93 if projectNameOrID == "" {
94 selectedProject, err = selectors.Project("Select the project to delete a release in", octopus, f.Ask)
95 if err != nil {
96 return err
97 }
98 } else { // project name is already provided, fetch the object because it's needed for further questions
99 selectedProject, err = selectors.FindProject(octopus, projectNameOrID)
100 if err != nil {
101 return err
102 }
103 cmd.Printf("Project %s\n", output.Cyan(selectedProject.Name))
104 }
105
106 if len(versionsToDelete) == 0 {
107 releasesToDelete, err = selectReleases(octopus, selectedProject, f.Ask)
108 if err != nil {
109 return err
110 }
111 } else {
112 releasesToDelete, err = findReleases(octopus, selectedProject, versionsToDelete)
113 if err != nil {
114 return err
115 }
116 }
117
118 if len(releasesToDelete) == 0 {
119 return nil // no work to do, just exit
120 }
121
122 // prompt for confirmation

Callers 1

NewCmdDeleteFunction · 0.70

Calls 11

NewRequesterFunction · 0.92
ProjectFunction · 0.92
FindProjectFunction · 0.92
CyanFunction · 0.92
selectReleasesFunction · 0.85
findReleasesFunction · 0.85
LenMethod · 0.80
GetSpacedClientMethod · 0.65
IsPromptEnabledMethod · 0.65
AskMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected