(f factory.Factory)
| 31 | } |
| 32 | |
| 33 | func NewCmdDelete(f factory.Factory) *cobra.Command { |
| 34 | var skipConfirmation bool |
| 35 | |
| 36 | cmd := &cobra.Command{ |
| 37 | Use: "delete {<name> | <id>}", |
| 38 | Short: "Delete a worker", |
| 39 | Long: "Delete a worker in Octopus Deploy", |
| 40 | Aliases: []string{"del", "rm", "remove"}, |
| 41 | Example: heredoc.Docf(` |
| 42 | %[1]s worker delete |
| 43 | %[1]s worker rm |
| 44 | `, constants.ExecutableName), |
| 45 | RunE: func(c *cobra.Command, args []string) error { |
| 46 | deps := cmd.NewDependencies(f, c) |
| 47 | |
| 48 | if util.Empty(args) { |
| 49 | opts := NewDeleteOptions(deps) |
| 50 | return deleteRun(opts) |
| 51 | } |
| 52 | |
| 53 | idOrName := args[0] |
| 54 | opts := NewDeleteOptions(deps) |
| 55 | worker, err := opts.GetWorkerCallback(idOrName) |
| 56 | if err != nil { |
| 57 | return err |
| 58 | } |
| 59 | |
| 60 | if worker == nil { |
| 61 | return fmt.Errorf("cannot find a worker with name or ID of '%s'", idOrName) |
| 62 | } |
| 63 | |
| 64 | if !skipConfirmation { // TODO NO_PROMPT env var or whatever we do there |
| 65 | return question.DeleteWithConfirmation(f.Ask, resourceDescription, worker.Name, worker.GetID(), func() error { |
| 66 | return delete(opts.Client, worker) |
| 67 | }) |
| 68 | } |
| 69 | |
| 70 | return delete(opts.Client, worker) |
| 71 | }, |
| 72 | } |
| 73 | |
| 74 | question.RegisterConfirmDeletionFlag(cmd, &skipConfirmation, resourceDescription) |
| 75 | |
| 76 | return cmd |
| 77 | } |
| 78 | |
| 79 | func deleteRun(opts *DeleteOptions) error { |
| 80 | worker, err := selectors.Select(opts.Ask, "Select the worker you wish to delete:", opts.GetWorkersCallback, func(worker *machines.Worker) string { return worker.Name }) |
nothing calls this directly
no test coverage detected