@@ -24,12 +24,12 @@ const (
2424)
2525
2626var (
27- initConfigDir sync.Once
27+ initConfigDir = new ( sync.Once )
2828 configDir string
2929 homeDir string
3030)
3131
32- // resetHomeDir is used in testing to resets the "homeDir" package variable to
32+ // resetHomeDir is used in testing to reset the "homeDir" package variable to
3333// force re-lookup of the home directory between tests.
3434func resetHomeDir () {
3535 homeDir = ""
@@ -42,6 +42,13 @@ func getHomeDir() string {
4242 return homeDir
4343}
4444
45+ // resetConfigDir is used in testing to reset the "configDir" package variable
46+ // and its sync.Once to force re-lookup between tests.
47+ func resetConfigDir () {
48+ configDir = ""
49+ initConfigDir = new (sync.Once )
50+ }
51+
4552func setConfigDir () {
4653 if configDir != "" {
4754 return
@@ -97,10 +104,15 @@ func LoadFromReader(configData io.Reader) (*configfile.ConfigFile, error) {
97104 return & configFile , err
98105}
99106
107+ // TODO remove this temporary hack, which is used to warn about the deprecated ~/.dockercfg file
108+ var printLegacyFileWarning bool
109+
100110// Load reads the configuration files in the given directory, and sets up
101111// the auth config information and returns values.
102112// FIXME: use the internal golang config parser
103113func Load (configDir string ) (* configfile.ConfigFile , error ) {
114+ printLegacyFileWarning = false
115+
104116 if configDir == "" {
105117 configDir = Dir ()
106118 }
@@ -125,6 +137,7 @@ func Load(configDir string) (*configfile.ConfigFile, error) {
125137 // Can't find latest config file so check for the old one
126138 filename = filepath .Join (getHomeDir (), oldConfigfile )
127139 if file , err := os .Open (filename ); err == nil {
140+ printLegacyFileWarning = true
128141 defer file .Close ()
129142 if err := configFile .LegacyLoadFromReader (file ); err != nil {
130143 return configFile , errors .Wrap (err , filename )
@@ -140,6 +153,9 @@ func LoadDefaultConfigFile(stderr io.Writer) *configfile.ConfigFile {
140153 if err != nil {
141154 fmt .Fprintf (stderr , "WARNING: Error loading config file: %v\n " , err )
142155 }
156+ if printLegacyFileWarning {
157+ _ , _ = fmt .Fprintln (stderr , "WARNING: Support for the legacy ~/.dockercfg configuration file and file-format is deprecated and will be removed in an upcoming release" )
158+ }
143159 if ! configFile .ContainsAuth () {
144160 configFile .CredentialsStore = credentials .DetectDefaultStore (configFile .CredentialsStore )
145161 }
0 commit comments