github.com/LukasHeimann/cloudfoundrycli/v8@v8.4.4/command/v7/env_command.go (about) 1 package v7 2 3 import ( 4 "fmt" 5 "sort" 6 7 "github.com/LukasHeimann/cloudfoundrycli/v8/command/flag" 8 log "github.com/sirupsen/logrus" 9 ) 10 11 type EnvCommand struct { 12 BaseCommand 13 14 RequiredArgs flag.EnvironmentArgs `positional-args:"yes"` 15 usage interface{} `usage:"CF_NAME env APP_NAME"` 16 relatedCommands interface{} `related_commands:"app, apps, set-env, unset-env, running-environment-variable-group, staging-environment-variable-group"` 17 } 18 19 func (cmd EnvCommand) Execute(_ []string) error { 20 err := cmd.SharedActor.CheckTarget(true, true) 21 if err != nil { 22 return err 23 } 24 25 user, err := cmd.Actor.GetCurrentUser() 26 if err != nil { 27 return err 28 } 29 30 appName := cmd.RequiredArgs.AppName 31 cmd.UI.DisplayTextWithFlavor("Getting env variables for app {{.AppName}} in org {{.OrgName}} / space {{.SpaceName}} as {{.Username}}...", map[string]interface{}{ 32 "AppName": appName, 33 "OrgName": cmd.Config.TargetedOrganization().Name, 34 "SpaceName": cmd.Config.TargetedSpace().Name, 35 "Username": user.Name, 36 }) 37 38 envGroups, warnings, err := cmd.Actor.GetEnvironmentVariablesByApplicationNameAndSpace( 39 appName, 40 cmd.Config.TargetedSpace().GUID, 41 ) 42 cmd.UI.DisplayWarnings(warnings) 43 if err != nil { 44 return err 45 } 46 47 if len(envGroups.System) > 0 || len(envGroups.Application) > 0 { 48 cmd.UI.DisplayHeader("System-Provided:") 49 err = cmd.displaySystem(envGroups.System) 50 if err != nil { 51 log.Errorln("error formatting system provided:", err) 52 } 53 if len(envGroups.Application) > 0 { 54 cmd.UI.DisplayNewline() 55 err = cmd.displaySystem(envGroups.Application) 56 if err != nil { 57 log.Errorln("error formatting application:", err) 58 } 59 } 60 } else { 61 cmd.UI.DisplayText("No system-provided env variables have been set") 62 } 63 cmd.UI.DisplayNewline() 64 65 if len(envGroups.EnvironmentVariables) > 0 { 66 cmd.UI.DisplayHeader("User-Provided:") 67 cmd.displayEnvGroup(envGroups.EnvironmentVariables) 68 } else { 69 cmd.UI.DisplayText("No user-provided env variables have been set") 70 } 71 cmd.UI.DisplayNewline() 72 73 if len(envGroups.Running) > 0 { 74 cmd.UI.DisplayHeader("Running Environment Variable Groups:") 75 cmd.displayEnvGroup(envGroups.Running) 76 } else { 77 cmd.UI.DisplayText("No running env variables have been set") 78 } 79 cmd.UI.DisplayNewline() 80 81 if len(envGroups.Staging) > 0 { 82 cmd.UI.DisplayHeader("Staging Environment Variable Groups:") 83 cmd.displayEnvGroup(envGroups.Staging) 84 } else { 85 cmd.UI.DisplayText("No staging env variables have been set") 86 } 87 cmd.UI.DisplayNewline() 88 89 return nil 90 } 91 92 func (cmd EnvCommand) displayEnvGroup(group map[string]interface{}) { 93 keys := sortKeys(group) 94 95 for _, key := range keys { 96 cmd.UI.DisplayText(fmt.Sprintf("%s: %v", key, group[key])) 97 } 98 } 99 100 func sortKeys(group map[string]interface{}) []string { 101 keys := make([]string, 0, len(group)) 102 for key := range group { 103 keys = append(keys, key) 104 } 105 sort.Strings(keys) 106 return keys 107 } 108 109 func (cmd EnvCommand) displaySystem(group map[string]interface{}) error { 110 for key, val := range group { 111 err := cmd.UI.DisplayJSON(key, val) 112 if err != nil { 113 return err 114 } 115 } 116 return nil 117 }