github.com/orange-cloudfoundry/cli@v7.1.0+incompatible/command/v7/revisions_command.go (about) 1 package v7 2 3 import ( 4 "strconv" 5 6 "code.cloudfoundry.org/cli/actor/v7action" 7 "code.cloudfoundry.org/cli/command/flag" 8 "code.cloudfoundry.org/cli/resources" 9 "code.cloudfoundry.org/cli/util/ui" 10 ) 11 12 //go:generate counterfeiter . RevisionsActor 13 14 type RevisionsActor interface { 15 GetRevisionsByApplicationNameAndSpace(appName string, spaceGUID string) ([]resources.Revision, v7action.Warnings, error) 16 } 17 18 type RevisionsCommand struct { 19 RequiredArgs flag.EnvironmentArgs `positional-args:"yes"` 20 usage interface{} `usage:"CF_NAME revisions APP_NAME"` 21 22 BaseCommand 23 } 24 25 func (cmd RevisionsCommand) Execute(_ []string) error { 26 err := cmd.SharedActor.CheckTarget(true, true) 27 if err != nil { 28 return err 29 } 30 31 user, err := cmd.Config.CurrentUser() 32 if err != nil { 33 return err 34 } 35 36 appName := cmd.RequiredArgs.AppName 37 cmd.UI.DisplayTextWithFlavor("Getting revisions for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ 38 "AppName": appName, 39 "OrgName": cmd.Config.TargetedOrganization().Name, 40 "SpaceName": cmd.Config.TargetedSpace().Name, 41 "Username": user.Name, 42 }) 43 44 app, warnings, err := cmd.Actor.GetApplicationByNameAndSpace(appName, cmd.Config.TargetedSpace().GUID) 45 cmd.UI.DisplayWarnings(warnings) 46 if err != nil { 47 return err 48 } 49 50 appGUID := app.GUID 51 revisionsFeature, warnings, err := cmd.Actor.GetAppFeature(appGUID, "revisions") 52 cmd.UI.DisplayWarnings(warnings) 53 if err != nil { 54 return err 55 } 56 57 if !revisionsFeature.Enabled { 58 cmd.UI.DisplayWarning("Warning: Revisions for app '{{.AppName}}' are disabled. Updates to the app will not create new revisions.", 59 map[string]interface{}{ 60 "AppName": appName, 61 }) 62 } 63 64 cmd.UI.DisplayNewline() 65 66 revisions, warnings, err := cmd.Actor.GetRevisionsByApplicationNameAndSpace( 67 appName, 68 cmd.Config.TargetedSpace().GUID, 69 ) 70 cmd.UI.DisplayWarnings(warnings) 71 if err != nil { 72 return err 73 } 74 75 if len(revisions) == 0 { 76 cmd.UI.DisplayText("No revisions found") 77 return nil 78 } 79 80 table := [][]string{{ 81 "revision", 82 "description", 83 "deployable", 84 "revision guid", 85 "created at", 86 }} 87 for _, revision := range revisions { 88 table = append(table, 89 []string{strconv.Itoa(revision.Version), 90 revision.Description, 91 strconv.FormatBool(revision.Deployable), 92 revision.GUID, 93 revision.CreatedAt, 94 }) 95 } 96 97 cmd.UI.DisplayTableWithHeader("", table, ui.DefaultTableSpacePadding) 98 99 return nil 100 }