github.com/randomtask1155/cli@v6.41.1-0.20181227003417-a98eed78cbde+incompatible/command/v6/v3_env_command.go (about) 1 package v6 2 3 import ( 4 "encoding/json" 5 "fmt" 6 7 "code.cloudfoundry.org/cli/actor/sharedaction" 8 "code.cloudfoundry.org/cli/actor/v3action" 9 "code.cloudfoundry.org/cli/api/cloudcontroller/ccversion" 10 "code.cloudfoundry.org/cli/command" 11 "code.cloudfoundry.org/cli/command/flag" 12 "code.cloudfoundry.org/cli/command/v6/shared" 13 ) 14 15 //go:generate counterfeiter . V3EnvActor 16 17 type V3EnvActor interface { 18 CloudControllerAPIVersion() string 19 GetEnvironmentVariablesByApplicationNameAndSpace(appName string, spaceGUID string) (v3action.EnvironmentVariableGroups, v3action.Warnings, error) 20 } 21 22 type V3EnvCommand struct { 23 RequiredArgs flag.EnvironmentArgs `positional-args:"yes"` 24 usage interface{} `usage:"CF_NAME v3-env APP_NAME"` 25 relatedCommands interface{} `related_commands:"v3-app, v3-apps, v3-set-env, v3-unset-env, running-environment-variable-group, staging-environment-variable-group"` 26 27 UI command.UI 28 Config command.Config 29 SharedActor command.SharedActor 30 Actor V3EnvActor 31 } 32 33 func (cmd *V3EnvCommand) Setup(config command.Config, ui command.UI) error { 34 cmd.UI = ui 35 cmd.Config = config 36 cmd.SharedActor = sharedaction.NewActor(config) 37 38 ccClient, _, err := shared.NewV3BasedClients(config, ui, true, "") 39 if err != nil { 40 return err 41 } 42 cmd.Actor = v3action.NewActor(ccClient, config, nil, nil) 43 44 return nil 45 } 46 47 func (cmd V3EnvCommand) Execute(args []string) error { 48 cmd.UI.DisplayWarning(command.ExperimentalWarning) 49 50 err := command.MinimumCCAPIVersionCheck(cmd.Actor.CloudControllerAPIVersion(), ccversion.MinVersionApplicationFlowV3) 51 if err != nil { 52 return err 53 } 54 55 err = cmd.SharedActor.CheckTarget(true, true) 56 if err != nil { 57 return err 58 } 59 60 user, err := cmd.Config.CurrentUser() 61 if err != nil { 62 return err 63 } 64 65 appName := cmd.RequiredArgs.AppName 66 cmd.UI.DisplayTextWithFlavor("Getting env variables for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ 67 "AppName": appName, 68 "OrgName": cmd.Config.TargetedOrganization().Name, 69 "SpaceName": cmd.Config.TargetedSpace().Name, 70 "Username": user.Name, 71 }) 72 cmd.UI.DisplayNewline() 73 74 envGroups, warnings, err := cmd.Actor.GetEnvironmentVariablesByApplicationNameAndSpace( 75 appName, 76 cmd.Config.TargetedSpace().GUID, 77 ) 78 cmd.UI.DisplayWarnings(warnings) 79 if err != nil { 80 return err 81 } 82 83 if len(envGroups.System) > 0 || len(envGroups.Application) > 0 { 84 cmd.UI.DisplayHeader("System-Provided:") 85 cmd.displayEnvGroup(envGroups.System) 86 if len(envGroups.Application) > 0 { 87 cmd.UI.DisplayNewline() 88 cmd.displayEnvGroup(envGroups.Application) 89 } 90 } else { 91 cmd.UI.DisplayText("No system-provided env variables have been set") 92 } 93 cmd.UI.DisplayNewline() 94 95 if len(envGroups.EnvironmentVariables) > 0 { 96 cmd.UI.DisplayHeader("User-Provided:") 97 cmd.displayEnvGroup(envGroups.EnvironmentVariables) 98 } else { 99 cmd.UI.DisplayText("No user-provided env variables have been set") 100 } 101 cmd.UI.DisplayNewline() 102 103 if len(envGroups.Running) > 0 { 104 cmd.UI.DisplayHeader("Running Environment Variable Groups:") 105 cmd.displayEnvGroup(envGroups.Running) 106 } else { 107 cmd.UI.DisplayText("No running env variables have been set") 108 } 109 cmd.UI.DisplayNewline() 110 111 if len(envGroups.Staging) > 0 { 112 cmd.UI.DisplayHeader("Staging Environment Variable Groups:") 113 cmd.displayEnvGroup(envGroups.Staging) 114 } else { 115 cmd.UI.DisplayText("No staging env variables have been set") 116 } 117 cmd.UI.DisplayNewline() 118 119 return nil 120 } 121 122 func (cmd V3EnvCommand) displayEnvGroup(group map[string]interface{}) error { 123 for key, val := range group { 124 valJSON, err := json.MarshalIndent(val, "", " ") 125 if err != nil { 126 return err 127 } 128 cmd.UI.DisplayText(fmt.Sprintf("%s: %s", key, string(valJSON))) 129 } 130 131 return nil 132 }