Skip to content

Commit

Permalink
feat: respect xdg_config_home, fixes ddev#5807
Browse files Browse the repository at this point in the history
  • Loading branch information
danepowell authored and stasadev committed Apr 26, 2024
1 parent 6cb2569 commit 48d9083
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions pkg/globalconfig/global_config.go
Original file line number Diff line number Diff line change
Expand Up @@ -535,25 +535,33 @@ func WriteProjectList(projects map[string]*ProjectInfo) error {
return nil
}

// GetGlobalDdevDir returns ~/.ddev, the global caching directory
// GetGlobalDdevDir returns the global configuration directory, which varies by OS.
func GetGlobalDdevDir() string {
// Check for legacy directory.
userHome, err := os.UserHomeDir()
if err != nil {
logrus.Fatal("Could not get home directory for current user. Is it set?")
}
ddevDir := filepath.Join(userHome, ".ddev")

// Create the directory if it is not already present.
// If legacy directory doesn't exist, create new one.
if _, err := os.Stat(ddevDir); os.IsNotExist(err) {
// If they happen to be running as root/sudo, we won't create the directory
// but act like we did. This should only happen for ddev hostname, which
// doesn't need config or access to this dir anyway.
if os.Geteuid() == 0 {
return ddevDir
}
err = os.MkdirAll(ddevDir, 0755)
userConfigDir, err := os.UserConfigDir()
if err != nil {
logrus.Fatalf("Failed to create required directory %s, err: %v", ddevDir, err)
logrus.Fatal("Could not get config directory for current user. Is it set?")
}
ddevDir = filepath.Join(userConfigDir, "ddev")
if _, err := os.Stat(ddevDir); os.IsNotExist(err) {
// If they happen to be running as root/sudo, we won't create the directory
// but act like we did. This should only happen for ddev hostname, which
// doesn't need config or access to this dir anyway.
if os.Geteuid() == 0 {
return ddevDir
}
err = os.MkdirAll(ddevDir, 0755)
if err != nil {
logrus.Fatalf("Failed to create required directory %s, err: %v", ddevDir, err)
}
}
}
// config.yaml is not allowed in ~/.ddev, can only result in disaster
Expand Down

0 comments on commit 48d9083

Please sign in to comment.