diff --git a/cli/command/cli.go b/cli/command/cli.go index e56c7a7985..110d242655 100644 --- a/cli/command/cli.go +++ b/cli/command/cli.go @@ -1,7 +1,6 @@ package command import ( - "fmt" "io" "net/http" "os" @@ -156,7 +155,7 @@ func getConfiguredCredentialStore(c *configfile.ConfigFile, serverAddress string // Initialize the dockerCli runs initialization that must happen after command // line flags are parsed. func (cli *DockerCli) Initialize(opts *cliflags.ClientOptions) error { - cli.configFile = LoadDefaultConfigFile(cli.err) + cli.configFile = cliconfig.LoadDefaultConfigFile(cli.err) var err error cli.client, err = NewAPIClientFromFlags(opts.Common, cli.configFile) @@ -213,19 +212,6 @@ func NewDockerCli(in io.ReadCloser, out, err io.Writer) *DockerCli { return &DockerCli{in: NewInStream(in), out: NewOutStream(out), err: err} } -// LoadDefaultConfigFile attempts to load the default config file and returns -// an initialized ConfigFile struct if none is found. -func LoadDefaultConfigFile(err io.Writer) *configfile.ConfigFile { - configFile, e := cliconfig.Load(cliconfig.Dir()) - if e != nil { - fmt.Fprintf(err, "WARNING: Error loading config file:%v\n", e) - } - if !configFile.ContainsAuth() { - credentials.DetectDefaultStore(configFile) - } - return configFile -} - // NewAPIClientFromFlags creates a new APIClient from command line flags func NewAPIClientFromFlags(opts *cliflags.CommonOptions, configFile *configfile.ConfigFile) (client.APIClient, error) { host, err := getServerHost(opts.Hosts, opts.TLSOptions) diff --git a/cli/config/config.go b/cli/config/config.go index 58c83b6404..74862f1ab2 100644 --- a/cli/config/config.go +++ b/cli/config/config.go @@ -1,11 +1,13 @@ package config import ( + "fmt" "io" "os" "path/filepath" "github.com/docker/cli/cli/config/configfile" + "github.com/docker/cli/cli/config/credentials" "github.com/docker/docker/api/types" "github.com/docker/docker/pkg/homedir" "github.com/pkg/errors" @@ -38,15 +40,6 @@ func SetDir(dir string) { configDir = dir } -// NewConfigFile initializes an empty configuration file for the given filename 'fn' -func NewConfigFile(fn string) *configfile.ConfigFile { - return &configfile.ConfigFile{ - AuthConfigs: make(map[string]types.AuthConfig), - HTTPHeaders: make(map[string]string), - Filename: fn, - } -} - // LegacyLoadFromReader is a convenience function that creates a ConfigFile object from // a non-nested reader func LegacyLoadFromReader(configData io.Reader) (*configfile.ConfigFile, error) { @@ -118,3 +111,16 @@ func Load(configDir string) (*configfile.ConfigFile, error) { } return &configFile, nil } + +// LoadDefaultConfigFile attempts to load the default config file and returns +// an initialized ConfigFile struct if none is found. +func LoadDefaultConfigFile(err io.Writer) *configfile.ConfigFile { + configFile, e := Load(Dir()) + if e != nil { + fmt.Fprintf(err, "WARNING: Error loading config file:%v\n", e) + } + if !configFile.ContainsAuth() { + credentials.DetectDefaultStore(configFile) + } + return configFile +} diff --git a/cli/config/config_test.go b/cli/config/config_test.go index 7eab2efaa3..4f98df9bff 100644 --- a/cli/config/config_test.go +++ b/cli/config/config_test.go @@ -484,15 +484,6 @@ func TestConfigDir(t *testing.T) { } } -func TestConfigFile(t *testing.T) { - configFilename := "configFilename" - configFile := NewConfigFile(configFilename) - - if configFile.Filename != configFilename { - t.Fatalf("Expected %s, got %s", configFilename, configFile.Filename) - } -} - func TestJSONReaderNoFile(t *testing.T) { js := ` { "auths": { "https://index.docker.io/v1/": { "auth": "am9lam9lOmhlbGxv", "email": "user@example.com" } } }` diff --git a/cli/config/configfile/file.go b/cli/config/configfile/file.go index 9c2c4eec6d..e6dd13934c 100644 --- a/cli/config/configfile/file.go +++ b/cli/config/configfile/file.go @@ -53,6 +53,15 @@ type ProxyConfig struct { FTPProxy string `json:"ftpProxy,omitempty"` } +// NewConfigFile initializes an empty configuration file for the given filename 'fn' +func NewConfigFile(fn string) *ConfigFile { + return &ConfigFile{ + AuthConfigs: make(map[string]types.AuthConfig), + HTTPHeaders: make(map[string]string), + Filename: fn, + } +} + // LegacyLoadFromReader reads the non-nested configuration data given and sets up the // auth config information with given directory and populates the receiver object func (configFile *ConfigFile) LegacyLoadFromReader(configData io.Reader) error { diff --git a/cli/config/configfile/file_test.go b/cli/config/configfile/file_test.go index 8c84347719..ac3271006e 100644 --- a/cli/config/configfile/file_test.go +++ b/cli/config/configfile/file_test.go @@ -142,3 +142,10 @@ func TestProxyConfigPerHost(t *testing.T) { } assert.Equal(t, expected, proxyConfig) } + +func TestConfigFile(t *testing.T) { + configFilename := "configFilename" + configFile := NewConfigFile(configFilename) + + assert.Equal(t, configFilename, configFile.Filename) +} diff --git a/cli/config/credentials/file_store_test.go b/cli/config/credentials/file_store_test.go index 6e16f2cd32..eadbcc23ef 100644 --- a/cli/config/credentials/file_store_test.go +++ b/cli/config/credentials/file_store_test.go @@ -4,7 +4,6 @@ import ( "io/ioutil" "testing" - cliconfig "github.com/docker/cli/cli/config" "github.com/docker/cli/cli/config/configfile" "github.com/docker/docker/api/types" ) @@ -14,7 +13,7 @@ func newConfigFile(auths map[string]types.AuthConfig) *configfile.ConfigFile { name := tmp.Name() tmp.Close() - c := cliconfig.NewConfigFile(name) + c := configfile.NewConfigFile(name) c.AuthConfigs = auths return c }