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