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  }