github.com/mook-as/cf-cli@v7.0.0-beta.28.0.20200120190804-b91c115fae48+incompatible/command/v7/set_running_environment_variable_group_command.go (about)

     1  package v7
     2  
     3  import (
     4  	"encoding/json"
     5  	"fmt"
     6  
     7  	"code.cloudfoundry.org/cli/actor/sharedaction"
     8  	"code.cloudfoundry.org/cli/actor/v7action"
     9  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3"
    10  	"code.cloudfoundry.org/cli/api/cloudcontroller/ccv3/constant"
    11  	"code.cloudfoundry.org/cli/cf/errors"
    12  	"code.cloudfoundry.org/cli/command"
    13  	"code.cloudfoundry.org/cli/command/flag"
    14  	"code.cloudfoundry.org/cli/command/v7/shared"
    15  	"code.cloudfoundry.org/clock"
    16  )
    17  
    18  //go:generate counterfeiter . SetRunningEnvironmentVariableGroupActor
    19  
    20  type SetRunningEnvironmentVariableGroupActor interface {
    21  	SetEnvironmentVariableGroup(group constant.EnvironmentVariableGroupName, envVars ccv3.EnvironmentVariables) (v7action.Warnings, error)
    22  }
    23  
    24  type SetRunningEnvironmentVariableGroupCommand struct {
    25  	RequiredArgs    flag.SetEnvVarGroup `positional-args:"yes"`
    26  	usage           interface{}         `usage:"CF_NAME set-running-environment-variable-group '{\"name\":\"value\",\"name\":\"value\"}'"`
    27  	relatedCommands interface{}         `related_commands:"set-env, staging-environment-variable-group"`
    28  
    29  	UI          command.UI
    30  	Config      command.Config
    31  	SharedActor command.SharedActor
    32  	Actor       SetRunningEnvironmentVariableGroupActor
    33  }
    34  
    35  func (cmd *SetRunningEnvironmentVariableGroupCommand) Setup(config command.Config, ui command.UI) error {
    36  	cmd.UI = ui
    37  	cmd.Config = config
    38  	sharedActor := sharedaction.NewActor(config)
    39  	cmd.SharedActor = sharedActor
    40  
    41  	ccClient, uaaClient, err := shared.GetNewClientsAndConnectToCF(config, ui, "")
    42  	if err != nil {
    43  		return err
    44  	}
    45  	cmd.Actor = v7action.NewActor(ccClient, config, sharedActor, uaaClient, clock.NewClock())
    46  
    47  	return nil
    48  }
    49  
    50  func (cmd SetRunningEnvironmentVariableGroupCommand) Execute(args []string) error {
    51  	err := cmd.SharedActor.CheckTarget(false, false)
    52  	if err != nil {
    53  		return err
    54  	}
    55  
    56  	user, err := cmd.Config.CurrentUser()
    57  	if err != nil {
    58  		return err
    59  	}
    60  
    61  	cmd.UI.DisplayTextWithFlavor("Setting the contents of the running environment variable group as {{.Username}}...", map[string]interface{}{
    62  		"Username": user.Name,
    63  	})
    64  
    65  	var envVars ccv3.EnvironmentVariables
    66  	err = json.Unmarshal([]byte(fmt.Sprintf(`{"var":%s}`, cmd.RequiredArgs.EnvVarGroupJson)), &envVars)
    67  	if err != nil {
    68  		return errors.New("Invalid environment variable group provided. Please provide a valid JSON object.")
    69  	}
    70  
    71  	warnings, err := cmd.Actor.SetEnvironmentVariableGroup(
    72  		constant.RunningEnvironmentVariableGroup,
    73  		envVars,
    74  	)
    75  	cmd.UI.DisplayWarnings(warnings)
    76  	if err != nil {
    77  		return err
    78  	}
    79  
    80  	cmd.UI.DisplayOK()
    81  
    82  	return nil
    83  }