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  }