Version: v7.1.0+incompatible Latest Latest

This package is not in the latest version of its module.

Go to latest
Published: Sep 9, 2020 License: Apache-2.0 Imports: 17 Imported by: 310



Package configv3 package contains everything related to the CF CLI Configuration.



View Source
const (
	// CurrentConfigVersion is the version field for the main config file
	CurrentConfigVersion = 4

	// DefaultDialTimeout is the default timeout for the dial.
	DefaultDialTimeout = 6 * time.Second

	// DefaultNOAARetryCount is the default number of request retries.
	DefaultNOAARetryCount = 5

	// DefaultOverallPollingTimeout is the default maximum time that the CLI will
	// poll a job running on the Cloud Controller. By default it's infinite,
	// which is represented by MaxInt64.
	DefaultOverallPollingTimeout = time.Duration(1 << 62)

	// DefaultPollingInterval is the time between consecutive polls of a status.
	DefaultPollingInterval = 3 * time.Second

	// DefaultStagingTimeout is the default timeout for application staging.
	DefaultStagingTimeout = 15 * time.Minute

	// DefaultStartupTimeout is the default timeout for application starting.
	DefaultStartupTimeout = 5 * time.Minute

	// DefaultTarget is the default CFConfig value for Target.
	DefaultTarget = ""

	// DefaultSSHOAuthClient is the default oauth client ID for SSHing into an
	// application/process container
	DefaultSSHOAuthClient = "ssh-proxy"

	// DefaultUAADisableKeepAlives is the default value that the UAA client will
	// use for Transport.DisableKeepAlives. UAA connections should always be
	// closed after every request because UAA communication is infrequent.
	DefaultUAADisableKeepAlives = true

	// DefaultUAAOAuthClient is the default client ID for the CLI when
	// communicating with the UAA.
	DefaultUAAOAuthClient = "cf"

	// DefaultUAAOAuthClientSecret is the default client secret for the CLI when
	// communicating with the UAA.
	DefaultUAAOAuthClientSecret = ""

	// DefaultRetryCount is the default number of request retries.
	DefaultRetryCount = 2
View Source
const (
	// DefaultPluginRepoName is the name of the preinstalled plugin repository.
	DefaultPluginRepoName = "CF-Community"

	// DefaultPluginRepoURL is the URL of the preinstalled plugin repository.
	DefaultPluginRepoURL = ""
View Source
const (
	// DefaultLocale is the default CFConfig value for Locale.
	DefaultLocale = ""


This section is empty.


func ConfigFilePath

func ConfigFilePath() string

ConfigFilePath returns the location of the config file


type ColorSetting

type ColorSetting int

ColorSetting is a trinary operator that represents if the display should have colors enabled, disabled, or automatically detected.

const (
	// DefaultColorEnabled is the default CFConfig value for ColorEnabled.
	DefaultColorEnabled = ""

	// ColorDisabled means that no colors/bolding will be displayed.
	ColorDisabled ColorSetting = iota

	// ColorEnabled means colors/bolding will be displayed.

	// ColorAuto means that the UI should decide if colors/bolding will be
	// enabled.

type Config

type Config struct {
	// ConfigFile stores the configuration from the .cf/config
	ConfigFile JSONConfig

	// ENV stores the configuration from os.ENV
	ENV EnvOverride

	// Flags stores the configuration from global flags
	Flags FlagOverride
	// contains filtered or unexported fields

Config combines the settings taken from the .cf/config.json, os.ENV, and the plugin config.

func GetCFConfig

func GetCFConfig() (*Config, error)

func LoadConfig

func LoadConfig(flags ...FlagOverride) (*Config, error)

LoadConfig loads the config from the .cf/config.json and os.ENV. If the config.json does not exists, it will use a default config in its place. Takes in an optional FlagOverride, will only use the first one passed, that can override the given flag values.

The '.cf' directory will be read in one of the following locations on UNIX Systems:

1. $CF_HOME/.cf if $CF_HOME is set
2. $HOME/.cf as the default

The '.cf' directory will be read in one of the following locations on Windows Systems:

1. CF_HOME\.cf if CF_HOME is set
3. USERPROFILE\.cf as the default

func (*Config) APIVersion

func (config *Config) APIVersion() string

APIVersion returns the CC API Version.

func (*Config) AccessToken

func (config *Config) AccessToken() string

AccessToken returns the access token for making authenticated API calls.

func (*Config) AddPlugin

func (config *Config) AddPlugin(plugin Plugin)

AddPlugin adds the specified plugin to PluginsConfig

func (*Config) AddPluginRepository

func (config *Config) AddPluginRepository(name string, url string)

AddPluginRepository adds an new repository to the plugin config. It does not add duplicates to the config.

func (*Config) BinaryName

func (config *Config) BinaryName() string

BinaryName returns the running name of the CF CLI

func (*Config) BinaryVersion

func (config *Config) BinaryVersion() string

BinaryVersion is the current version of the CF binary.

func (*Config) CFPassword

func (config *Config) CFPassword() string

CFPassword returns the value of the "CF_PASSWORD" environment variable.

func (*Config) CFUsername

func (config *Config) CFUsername() string

CFUsername returns the value of the "CF_USERNAME" environment variable.

func (*Config) ColorEnabled

func (config *Config) ColorEnabled() ColorSetting

ColorEnabled returns the color setting based off:

1. The $CF_COLOR environment variable if set (0/1/t/f/true/false)
2. The 'ColorEnabled' value in the .cf/config.json if set
3. Defaults to ColorAuto if nothing is set

func (*Config) CreatePluginHome

func (config *Config) CreatePluginHome() error

func (*Config) CurrentUser

func (config *Config) CurrentUser() (User, error)

CurrentUser returns user information decoded from the JWT access token in .cf/config.json.

func (*Config) CurrentUserName

func (config *Config) CurrentUserName() (string, error)

CurrentUserName returns the name of a user as returned by CurrentUser()

func (*Config) DialTimeout

func (config *Config) DialTimeout() time.Duration

DialTimeout returns the timeout to use when dialing. This is based off of:

1. The $CF_DIAL_TIMEOUT environment variable if set
2. Falling back to the default

func (*Config) DockerPassword

func (config *Config) DockerPassword() string

DockerPassword returns the docker password from the environment.

func (*Config) Experimental

func (config *Config) Experimental() bool

Experimental returns whether or not to run experimental CLI commands. This is based on the following:

1. The $CF_CLI_EXPERIMENTAL environment variable if set
2. Defaults to false

func (*Config) GetPlugin

func (config *Config) GetPlugin(pluginName string) (Plugin, bool)

GetPlugin returns the requested plugin and true if it exists.

func (*Config) GetPluginCaseInsensitive

func (config *Config) GetPluginCaseInsensitive(pluginName string) (Plugin, bool)

GetPluginCaseInsensitive finds the first matching plugin name case insensitive and returns true if it exists.

func (*Config) HTTPSProxy

func (config *Config) HTTPSProxy() string

HTTPSProxy returns the proxy url that the CLI should use. The url is based off of:

1. The $https_proxy environment variable if set
2. Defaults to the empty string

func (*Config) HasTargetedOrganization

func (config *Config) HasTargetedOrganization() bool

HasTargetedOrganization returns true if the organization is set.

func (*Config) HasTargetedSpace

func (config *Config) HasTargetedSpace() bool

HasTargetedSpace returns true if the space is set.

func (*Config) IsTTY

func (config *Config) IsTTY() bool

IsTTY returns true based off of:

- The $FORCE_TTY is set to true/t/1
- Detected from the STDOUT stream

func (*Config) Locale

func (config *Config) Locale() string

Locale returns the locale/language the UI should be displayed in. This value is based off of:

1. The 'Locale' setting in the .cf/config.json
2. The $LC_ALL environment variable if set
3. The $LANG environment variable if set
4. Defaults to DefaultLocale

func (*Config) LogLevel

func (config *Config) LogLevel() int

LogLevel returns the global log level. The levels follow Logrus's log level scheme. This value is based off of:

- The $CF_LOG_LEVEL and an int/warn/info/etc...
- Defaults to PANIC/0 (ie no logging)

func (*Config) MinCLIVersion

func (config *Config) MinCLIVersion() string

MinCLIVersion returns the minimum CLI version required by the CC.

func (*Config) NOAARequestRetryCount

func (*Config) NOAARequestRetryCount() int

NOAARequestRetryCount returns the number of request retries.

func (*Config) OverallPollingTimeout

func (config *Config) OverallPollingTimeout() time.Duration

OverallPollingTimeout returns the overall polling timeout for async operations. The time is based off of:

1. The config file's AsyncTimeout value (integer) is > 0
2. Defaults to the DefaultOverallPollingTimeout

func (*Config) PluginHome

func (config *Config) PluginHome() string

PluginHome returns the plugin configuration directory to:

1. The $CF_PLUGIN_HOME/.cf/plugins environment variable if set
2. Defaults to the home directory (outlined in LoadConfig)/.cf/plugins

func (*Config) PluginRepositories

func (config *Config) PluginRepositories() []PluginRepository

PluginRepositories returns the currently configured plugin repositories from the .cf/config.json.

func (*Config) Plugins

func (config *Config) Plugins() []Plugin

Plugins returns installed plugins from the config sorted by name (case-insensitive).

func (*Config) PollingInterval

func (config *Config) PollingInterval() time.Duration

PollingInterval returns the time between polls.

func (*Config) RefreshToken

func (config *Config) RefreshToken() string

RefreshToken returns the refresh token for getting a new access token.

func (*Config) RemovePlugin

func (config *Config) RemovePlugin(pluginName string)

RemovePlugin removes the specified plugin from PluginsConfig idempotently

func (*Config) RequestRetryCount

func (*Config) RequestRetryCount() int

RequestRetryCount returns the number of request retries.

func (*Config) RoutingEndpoint

func (config *Config) RoutingEndpoint() string

RoutingEndpoint returns the endpoint for the router API

func (*Config) SSHOAuthClient

func (config *Config) SSHOAuthClient() string

SSHOAuthClient returns the OAuth client id used for SSHing into application/process containers.

func (*Config) SetAccessToken

func (config *Config) SetAccessToken(accessToken string)

SetAccessToken sets the current access token.

func (*Config) SetAsyncTimeout

func (config *Config) SetAsyncTimeout(timeout int)

SetAsyncTimeout sets the async timeout.

func (*Config) SetColorEnabled

func (config *Config) SetColorEnabled(enabled string)

SetColorEnabled sets the color enabled feature to true or false

func (*Config) SetLocale

func (config *Config) SetLocale(locale string)

SetLocale sets the locale, or clears the field if requested

func (*Config) SetMinCLIVersion

func (config *Config) SetMinCLIVersion(minVersion string)

SetMinCLIVersion sets the minimum CLI version required by the CC.

func (*Config) SetOrganizationInformation

func (config *Config) SetOrganizationInformation(guid string, name string)

SetOrganizationInformation sets the currently targeted organization.

func (*Config) SetRefreshToken

func (config *Config) SetRefreshToken(refreshToken string)

SetRefreshToken sets the current refresh token.

func (*Config) SetSpaceInformation

func (config *Config) SetSpaceInformation(guid string, name string, allowSSH bool)

SetSpaceInformation sets the currently targeted space. The "AllowSSH" field is not returned by v3, and is never read from the config. Persist `true` to maintain compatibility in the config file. TODO: this field should be removed entirely in v7

func (*Config) SetTargetInformation

func (config *Config) SetTargetInformation(args TargetInformationArgs)

SetTargetInformation sets the currently targeted CC API and related other related API URLs.

func (*Config) SetTokenInformation

func (config *Config) SetTokenInformation(accessToken string, refreshToken string, sshOAuthClient string)

SetTokenInformation sets the current token/user information.

func (*Config) SetTrace

func (config *Config) SetTrace(trace string)

SetTrace sets the trace field to either true, false, or a path to a file.

func (*Config) SetUAAClientCredentials

func (config *Config) SetUAAClientCredentials(client string, clientSecret string)

SetUAAClientCredentials sets the client credentials.

func (*Config) SetUAAEndpoint

func (config *Config) SetUAAEndpoint(uaaEndpoint string)

SetUAAEndpoint sets the UAA endpoint that is obtained from hitting <AuthorizationEndpoint>/login.

func (*Config) SetUAAGrantType

func (config *Config) SetUAAGrantType(uaaGrantType string)

SetUAAGrantType sets the UAA grant type for logging in and refreshing the token.

func (*Config) SkipSSLValidation

func (config *Config) SkipSSLValidation() bool

SkipSSLValidation returns whether or not to skip SSL validation when targeting an API endpoint.

func (*Config) StagingTimeout

func (config *Config) StagingTimeout() time.Duration

StagingTimeout returns the max time an application staging should take. The time is based off of:

1. The $CF_STAGING_TIMEOUT environment variable if set
2. Defaults to the DefaultStagingTimeout

func (*Config) StartupTimeout

func (config *Config) StartupTimeout() time.Duration

StartupTimeout returns the max time an application should take to start. The time is based off of:

1. The $CF_STARTUP_TIMEOUT environment variable if set
2. Defaults to the DefaultStartupTimeout

func (*Config) Target

func (config *Config) Target() string

Target returns the CC API URL.

func (*Config) TargetedOrganization

func (config *Config) TargetedOrganization() Organization

TargetedOrganization returns the currently targeted organization.

func (*Config) TargetedOrganizationName

func (config *Config) TargetedOrganizationName() string

TargetedOrganizationName returns the name of the targeted organization.

func (*Config) TargetedSpace

func (config *Config) TargetedSpace() Space

TargetedSpace returns the currently targeted space.

func (*Config) TerminalWidth

func (config *Config) TerminalWidth() int

TerminalWidth returns the width of the terminal from when the config was loaded. If the terminal width has changed since the config has loaded, it will **not** return the new width.

func (*Config) UAADisableKeepAlives

func (*Config) UAADisableKeepAlives() bool

UAADisableKeepAlives returns true when TCP connections should not be reused for UAA.

func (*Config) UAAGrantType

func (config *Config) UAAGrantType() string

UAAGrantType returns the grant type of the supplied UAA credentials.

func (*Config) UAAOAuthClient

func (config *Config) UAAOAuthClient() string

UAAOAuthClient returns the CLI's UAA client ID.

func (*Config) UAAOAuthClientSecret

func (config *Config) UAAOAuthClientSecret() string

UAAOAuthClientSecret returns the CLI's UAA client secret.

func (*Config) UnsetOrganizationAndSpaceInformation

func (config *Config) UnsetOrganizationAndSpaceInformation()

UnsetOrganizationAndSpaceInformation resets the organization and space values to default.

func (*Config) UnsetSpaceInformation

func (config *Config) UnsetSpaceInformation()

UnsetSpaceInformation resets the space values to default.

func (*Config) UnsetUserInformation

func (config *Config) UnsetUserInformation()

UnsetUserInformation resets the access token, refresh token, UAA grant type, UAA client credentials, and targeted org/space information.

func (*Config) V7SetSpaceInformation

func (config *Config) V7SetSpaceInformation(guid string, name string)

V7SetSpaceInformation sets the currently targeted space.

func (*Config) Verbose

func (config *Config) Verbose() (bool, []string)

Verbose returns true if verbose should be displayed to terminal, in addition a slice of absolute paths in which verbose text will appear. This is based off of:

- The config file's trace value (true/false/file path)
- The $CF_TRACE environment variable if set (true/false/file path)
- The '-v/--verbose' global flag
- Defaults to false

func (*Config) WriteConfig

func (c *Config) WriteConfig() error

WriteConfig creates the .cf directory and then writes the config.json. The location of .cf directory is written in the same way LoadConfig reads .cf directory.

func (*Config) WritePluginConfig

func (config *Config) WritePluginConfig() error

WritePluginConfig writes the plugin config to config.json in the plugin home directory.

type EnvOverride

type EnvOverride struct {
	BinaryName       string
	CFColor          string
	CFDialTimeout    string
	CFHome           string
	CFLogLevel       string
	CFPassword       string
	CFPluginHome     string
	CFStagingTimeout string
	CFStartupTimeout string
	CFTrace          string
	CFUsername       string
	DockerPassword   string
	Experimental     string
	ForceTTY         string
	HTTPSProxy       string
	Lang             string
	LCAll            string

EnvOverride represents all the environment variables read by the CF CLI

type FlagOverride

type FlagOverride struct {
	Verbose bool

FlagOverride represents all the global flags passed to the CF CLI

type JSONConfig

type JSONConfig struct {
	AccessToken              string             `json:"AccessToken"`
	APIVersion               string             `json:"APIVersion"`
	AsyncTimeout             int                `json:"AsyncTimeout"`
	AuthorizationEndpoint    string             `json:"AuthorizationEndpoint"`
	ColorEnabled             string             `json:"ColorEnabled"`
	ConfigVersion            int                `json:"ConfigVersion"`
	DopplerEndpoint          string             `json:"DopplerEndPoint"`
	Locale                   string             `json:"Locale"`
	LogCacheEndpoint         string             `json:"LogCacheEndPoint"`
	MinCLIVersion            string             `json:"MinCLIVersion"`
	MinRecommendedCLIVersion string             `json:"MinRecommendedCLIVersion"`
	TargetedOrganization     Organization       `json:"OrganizationFields"`
	PluginRepositories       []PluginRepository `json:"PluginRepos"`
	RefreshToken             string             `json:"RefreshToken"`
	RoutingEndpoint          string             `json:"RoutingAPIEndpoint"`
	TargetedSpace            Space              `json:"SpaceFields"`
	SSHOAuthClient           string             `json:"SSHOAuthClient"`
	SkipSSLValidation        bool               `json:"SSLDisabled"`
	Target                   string             `json:"Target"`
	Trace                    string             `json:"Trace"`
	UAAEndpoint              string             `json:"UaaEndpoint"`
	UAAGrantType             string             `json:"UAAGrantType"`
	UAAOAuthClient           string             `json:"UAAOAuthClient"`
	UAAOAuthClientSecret     string             `json:"UAAOAuthClientSecret"`

JSONConfig represents .cf/config.json.

type Organization

type Organization struct {
	GUID string `json:"GUID"`
	Name string `json:"Name"`

Organization contains basic information about the targeted organization.

type Plugin

type Plugin struct {
	Name           string
	Location       string          `json:"Location"`
	Version        PluginVersion   `json:"Version"`
	LibraryVersion PluginVersion   `json:"LibraryVersion"`
	Commands       []PluginCommand `json:"Commands"`

Plugin represents the plugin as a whole, not be confused with PluginCommand

func (Plugin) CalculateSHA1

func (p Plugin) CalculateSHA1() string

CalculateSHA1 returns the SHA1 value of the plugin executable. If an error is encountered calculating SHA1, N/A is returned

func (Plugin) PluginCommands

func (p Plugin) PluginCommands() []PluginCommand

PluginCommands returns the plugin's commands sorted by command name.

type PluginCommand

type PluginCommand struct {
	Name         string             `json:"Name"`
	Alias        string             `json:"Alias"`
	HelpText     string             `json:"HelpText"`
	UsageDetails PluginUsageDetails `json:"UsageDetails"`

PluginCommand represents an individual command inside a plugin

func (PluginCommand) CommandName

func (c PluginCommand) CommandName() string

CommandName returns the name of the plugin. The name is concatenated with alias if alias is specified.

type PluginRepository

type PluginRepository struct {
	Name string `json:"Name"`
	URL  string `json:"URL"`

PluginRepository is a saved plugin repository

type PluginUsageDetails

type PluginUsageDetails struct {
	Usage   string            `json:"Usage"`
	Options map[string]string `json:"Options"`

PluginUsageDetails contains the usage metadata provided by the plugin

type PluginVersion

type PluginVersion struct {
	Major int `json:"Major"`
	Minor int `json:"Minor"`
	Build int `json:"Build"`

PluginVersion is the plugin version information

func (PluginVersion) String

func (v PluginVersion) String() string

String returns the plugin's version in the format x.y.z.

type PluginsConfig

type PluginsConfig struct {
	Plugins map[string]Plugin `json:"Plugins"`

PluginsConfig represents the plugin configuration

type Space

type Space struct {
	GUID     string `json:"GUID"`
	Name     string `json:"Name"`
	AllowSSH bool   `json:"AllowSSH"`

Space contains basic information about the targeted space.

type TargetInformationArgs

type TargetInformationArgs struct {
	Api               string
	ApiVersion        string
	Auth              string
	Doppler           string
	LogCache          string
	MinCLIVersion     string
	Routing           string
	SkipSSLValidation bool

type User

type User struct {
	Name     string
	GUID     string
	Origin   string
	IsClient bool

User represents the user information provided by the JWT access token.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
t or T : Toggle theme light dark auto
y or Y : Canonical URL