(cmd *cobra.Command, f factory.Factory, flags *Flags, args []string)
| 63 | } |
| 64 | |
| 65 | func 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 |
no test coverage detected