code: func Load(configDir string) (*configfile.ConfigFile, error) {
  	if configDir == "" {
  		configDir = Dir()
  	}
  
  	filename := filepath.Join(configDir, ConfigFileName)
  	configFile := configfile.New(filename)
  
  	// Try happy path first - latest config file
  	if _, err := os.Stat(filename); err == nil {
  		file, err := os.Open(filename)
  		if err != nil {
  			return configFile, errors.Wrap(err, filename)
  		}
  		defer file.Close()
  		err = configFile.LoadFromReader(file)
  		if err != nil {
  			err = errors.Wrap(err, filename)
  		}
  		return configFile, err
  	} else if !os.IsNotExist(err) {
  		// if file is there but we can't stat it for any reason other
  		// than it doesn't exist then stop
  		return configFile, errors.Wrap(err, filename)
  	}
  
  	// Can't find latest config file so check for the old one
  	confFile := filepath.Join(homedir.Get(), oldConfigfile)
  	if _, err := os.Stat(confFile); err != nil {
  		return configFile, nil //missing file is not an error
  	}
  	file, err := os.Open(confFile)
  	if err != nil {
  		return configFile, errors.Wrap(err, filename)
  	}
  	defer file.Close()
  	err = configFile.LegacyLoadFromReader(file)
  	if err != nil {
  		return configFile, errors.Wrap(err, filename)
  	}
  	return configFile, nil
  }
docs: // Load reads the configuration files in the given directory, and sets up
  // the auth config information and returns values.
  // FIXME: use the internal golang config parser