diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index 8a1927a39c..6773dacfff 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -1,5 +1,7 @@ ### SDK Features ### SDK Enhancements +* `aws/session`: Modified config resolution strategy when `$HOME` or `%USERPROFILE%` environment variables are not set. + * When the environment variables are not set, the SDK will attempt to determine the home directory using `user.Current()`. ### SDK Bugs diff --git a/internal/shareddefaults/shared_config.go b/internal/shareddefaults/shared_config.go index ebcbc2b40a..34fea49ca8 100644 --- a/internal/shareddefaults/shared_config.go +++ b/internal/shareddefaults/shared_config.go @@ -1,9 +1,8 @@ package shareddefaults import ( - "os" + "os/user" "path/filepath" - "runtime" ) // SharedCredentialsFilename returns the SDK's default file path @@ -31,10 +30,17 @@ func SharedConfigFilename() string { // UserHomeDir returns the home directory for the user the process is // running under. func UserHomeDir() string { - if runtime.GOOS == "windows" { // Windows - return os.Getenv("USERPROFILE") + var home string + + home = userHomeDir() + if len(home) > 0 { + return home + } + + currUser, _ := user.Current() + if currUser != nil { + home = currUser.HomeDir } - // *nix - return os.Getenv("HOME") + return home } diff --git a/internal/shareddefaults/shared_config_resolve_home.go b/internal/shareddefaults/shared_config_resolve_home.go new file mode 100644 index 0000000000..eb298ae0fc --- /dev/null +++ b/internal/shareddefaults/shared_config_resolve_home.go @@ -0,0 +1,18 @@ +//go:build !go1.12 +// +build !go1.12 + +package shareddefaults + +import ( + "os" + "runtime" +) + +func userHomeDir() string { + if runtime.GOOS == "windows" { // Windows + return os.Getenv("USERPROFILE") + } + + // *nix + return os.Getenv("HOME") +} diff --git a/internal/shareddefaults/shared_config_resolve_home_go1.12.go b/internal/shareddefaults/shared_config_resolve_home_go1.12.go new file mode 100644 index 0000000000..51541b5087 --- /dev/null +++ b/internal/shareddefaults/shared_config_resolve_home_go1.12.go @@ -0,0 +1,13 @@ +//go:build go1.12 +// +build go1.12 + +package shareddefaults + +import ( + "os" +) + +func userHomeDir() string { + home, _ := os.UserHomeDir() + return home +}