(args []string)
| 43 | } |
| 44 | |
| 45 | func (cmd RollbackCommand) Execute(args []string) error { |
| 46 | targetRevision := int(cmd.Version.Value) |
| 47 | err := cmd.SharedActor.CheckTarget(true, true) |
| 48 | if err != nil { |
| 49 | return err |
| 50 | } |
| 51 | |
| 52 | user, err := cmd.Actor.GetCurrentUser() |
| 53 | if err != nil { |
| 54 | return err |
| 55 | } |
| 56 | |
| 57 | err = cmd.ValidateFlags() |
| 58 | if err != nil { |
| 59 | return err |
| 60 | } |
| 61 | |
| 62 | app, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(cmd.RequiredArgs.AppName, cmd.Config.TargetedSpace().GUID) |
| 63 | cmd.UI.DisplayWarnings(warnings) |
| 64 | if err != nil { |
| 65 | return err |
| 66 | } |
| 67 | |
| 68 | revisions, warnings, err := cmd.Actor.GetRevisionsByApplicationNameAndSpace(app.Name, cmd.Config.TargetedSpace().GUID) |
| 69 | cmd.UI.DisplayWarnings(warnings) |
| 70 | if err != nil { |
| 71 | return err |
| 72 | } |
| 73 | |
| 74 | if len(revisions) == 0 { |
| 75 | return errors.New(fmt.Sprintf("No revisions for app %s", cmd.RequiredArgs.AppName)) |
| 76 | } |
| 77 | |
| 78 | revision, warnings, err := cmd.Actor.GetRevisionByApplicationAndVersion(app.GUID, targetRevision) |
| 79 | cmd.UI.DisplayWarnings(warnings) |
| 80 | if err != nil { |
| 81 | return err |
| 82 | } |
| 83 | |
| 84 | // TODO Localization? |
| 85 | if !cmd.Force { |
| 86 | cmd.UI.DisplayTextWithFlavor("Rolling '{{.AppName}}' back to revision '{{.TargetRevision}}' will create a new revision. The new revision will use the settings from revision '{{.TargetRevision}}'.", map[string]interface{}{ |
| 87 | "AppName": cmd.RequiredArgs.AppName, |
| 88 | "TargetRevision": targetRevision, |
| 89 | }) |
| 90 | |
| 91 | prompt := "Are you sure you want to continue?" |
| 92 | response, promptErr := cmd.UI.DisplayBoolPrompt(false, prompt, nil) |
| 93 | |
| 94 | if promptErr != nil { |
| 95 | return promptErr |
| 96 | } |
| 97 | |
| 98 | if !response { |
| 99 | cmd.UI.DisplayText("App '{{.AppName}}' has not been rolled back to revision '{{.TargetRevision}}'.", map[string]interface{}{ |
| 100 | "AppName": cmd.RequiredArgs.AppName, |
| 101 | "TargetRevision": targetRevision, |
| 102 | }) |
nothing calls this directly
no test coverage detected