Skip to content

Commit

Permalink
Merge pull request moby#45814 from thaJeztah/cleanup_homedir
Browse files Browse the repository at this point in the history
pkg/homedir: use os.UserHomeDir(), deprecate GetShortcutString(), Key()
  • Loading branch information
neersighted committed Jun 26, 2023
2 parents db381fb + 3c1de2e commit ddae599
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 55 deletions.
44 changes: 44 additions & 0 deletions pkg/homedir/homedir.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package homedir

import (
"os"
"os/user"
"runtime"
)

// Key returns the env var name for the user's home dir based on
// the platform being run on.
//
// Deprecated: this function is no longer used, and will be removed in the next release.
func Key() string {
return envKeyName
}

// Get returns the home directory of the current user with the help of
// environment variables depending on the target operating system.
// Returned path should be used with "path/filepath" to form new paths.
//
// On non-Windows platforms, it falls back to nss lookups, if the home
// directory cannot be obtained from environment-variables.
//
// If linking statically with cgo enabled against glibc, ensure the
// osusergo build tag is used.
//
// If needing to do nss lookups, do not disable cgo or set osusergo.
func Get() string {
home, _ := os.UserHomeDir()
if home == "" && runtime.GOOS != "windows" {
if u, err := user.Current(); err == nil {
return u.HomeDir
}
}
return home
}

// GetShortcutString returns the string that is shortcut to user's home directory
// in the native shell of the platform running on.
//
// Deprecated: this function is no longer used, and will be removed in the next release.
func GetShortcutString() string {
return homeShortCut
}
2 changes: 1 addition & 1 deletion pkg/homedir/homedir_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ func TestGet(t *testing.T) {
}

func TestGetShortcutString(t *testing.T) {
shortcut := GetShortcutString()
shortcut := GetShortcutString() //nolint:staticcheck // ignore SA1019 (GetShortcutString is deprecated)
if shortcut == "" {
t.Fatal("returned shortcut string is empty")
}
Expand Down
36 changes: 3 additions & 33 deletions pkg/homedir/homedir_unix.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,37 +2,7 @@

package homedir // import "github.com/docker/docker/pkg/homedir"

import (
"os"
"os/user"
const (
envKeyName = "HOME"
homeShortCut = "~"
)

// Key returns the env var name for the user's home dir based on
// the platform being run on
func Key() string {
return "HOME"
}

// Get returns the home directory of the current user with the help of
// environment variables depending on the target operating system.
// Returned path should be used with "path/filepath" to form new paths.
//
// If linking statically with cgo enabled against glibc, ensure the
// osusergo build tag is used.
//
// If needing to do nss lookups, do not disable cgo or set osusergo.
func Get() string {
home := os.Getenv(Key())
if home == "" {
if u, err := user.Current(); err == nil {
return u.HomeDir
}
}
return home
}

// GetShortcutString returns the string that is shortcut to user's home directory
// in the native shell of the platform running on.
func GetShortcutString() string {
return "~"
}
24 changes: 3 additions & 21 deletions pkg/homedir/homedir_windows.go
Original file line number Diff line number Diff line change
@@ -1,24 +1,6 @@
package homedir // import "github.com/docker/docker/pkg/homedir"

import (
"os"
const (
envKeyName = "USERPROFILE"
homeShortCut = "%USERPROFILE%" // be careful while using in format functions
)

// Key returns the env var name for the user's home dir based on
// the platform being run on
func Key() string {
return "USERPROFILE"
}

// Get returns the home directory of the current user with the help of
// environment variables depending on the target operating system.
// Returned path should be used with "path/filepath" to form new paths.
func Get() string {
return os.Getenv(Key())
}

// GetShortcutString returns the string that is shortcut to user's home directory
// in the native shell of the platform running on.
func GetShortcutString() string {
return "%USERPROFILE%" // be careful while using in format functions
}

0 comments on commit ddae599

Please sign in to comment.