From 63b6feced289ad118a6425c09d26477403c2c979 Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Mon, 26 Jan 2015 11:04:16 -0800 Subject: [PATCH 1/2] Extract $HOME usages into utils.GetHomeDir() Refactored getHomeDir in docker/docker to GetHomeDir in utils pkg. Currently covers all use cases on the client-side. Signed-off-by: Ahmet Alp Balkan Upstream-commit: 6ffb77afd4c3705322417f0673d254038f01a187 Component: engine --- components/engine/api/client/cli.go | 3 ++- components/engine/api/client/commands.go | 2 +- components/engine/docker/daemon.go | 2 +- components/engine/docker/flags.go | 14 ++++---------- components/engine/utils/homedir.go | 13 +++++++++++++ 5 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 components/engine/utils/homedir.go diff --git a/components/engine/api/client/cli.go b/components/engine/api/client/cli.go index 5e1ccb3291..34b4f99413 100644 --- a/components/engine/api/client/cli.go +++ b/components/engine/api/client/cli.go @@ -17,6 +17,7 @@ import ( flag "github.com/docker/docker/pkg/mflag" "github.com/docker/docker/pkg/term" "github.com/docker/docker/registry" + "github.com/docker/docker/utils" ) type DockerCli struct { @@ -104,7 +105,7 @@ func (cli *DockerCli) Subcmd(name, signature, description string, exitOnError bo } func (cli *DockerCli) LoadConfigFile() (err error) { - cli.configFile, err = registry.LoadConfig(os.Getenv("HOME")) + cli.configFile, err = registry.LoadConfig(utils.GetHomeDir()) if err != nil { fmt.Fprintf(cli.err, "WARNING: %s\n", err) } diff --git a/components/engine/api/client/commands.go b/components/engine/api/client/commands.go index daa13743eb..01db93391d 100644 --- a/components/engine/api/client/commands.go +++ b/components/engine/api/client/commands.go @@ -388,7 +388,7 @@ func (cli *DockerCli) CmdLogin(args ...string) error { var out2 engine.Env err = out2.Decode(stream) if err != nil { - cli.configFile, _ = registry.LoadConfig(os.Getenv("HOME")) + cli.configFile, _ = registry.LoadConfig(utils.GetHomeDir()) return err } registry.SaveConfig(cli.configFile) diff --git a/components/engine/docker/daemon.go b/components/engine/docker/daemon.go index 0923997375..5f29b7d463 100644 --- a/components/engine/docker/daemon.go +++ b/components/engine/docker/daemon.go @@ -36,7 +36,7 @@ func init() { func migrateKey() (err error) { // Migrate trust key if exists at ~/.docker/key.json and owned by current user - oldPath := filepath.Join(getHomeDir(), ".docker", defaultTrustKeyFile) + oldPath := filepath.Join(utils.GetHomeDir(), ".docker", defaultTrustKeyFile) newPath := filepath.Join(getDaemonConfDir(), defaultTrustKeyFile) if _, statErr := os.Stat(newPath); os.IsNotExist(statErr) && utils.IsFileOwner(oldPath) { defer func() { diff --git a/components/engine/docker/flags.go b/components/engine/docker/flags.go index 04830f4dd2..d8c9e8c153 100644 --- a/components/engine/docker/flags.go +++ b/components/engine/docker/flags.go @@ -8,6 +8,7 @@ import ( "github.com/docker/docker/opts" flag "github.com/docker/docker/pkg/mflag" + "github.com/docker/docker/utils" ) var ( @@ -17,21 +18,14 @@ var ( func init() { if dockerCertPath == "" { - dockerCertPath = filepath.Join(getHomeDir(), ".docker") + dockerCertPath = filepath.Join(utils.GetHomeDir(), ".docker") } } -func getHomeDir() string { - if runtime.GOOS == "windows" { - return os.Getenv("USERPROFILE") - } - return os.Getenv("HOME") -} - func getDaemonConfDir() string { // TODO: update for Windows daemon if runtime.GOOS == "windows" { - return filepath.Join(os.Getenv("USERPROFILE"), ".docker") + return filepath.Join(utils.GetHomeDir(), ".docker") } return "/etc/docker" } @@ -60,7 +54,7 @@ func setDefaultConfFlag(flag *string, def string) { if *flDaemon { *flag = filepath.Join(getDaemonConfDir(), def) } else { - *flag = filepath.Join(getHomeDir(), ".docker", def) + *flag = filepath.Join(utils.GetHomeDir(), ".docker", def) } } } diff --git a/components/engine/utils/homedir.go b/components/engine/utils/homedir.go new file mode 100644 index 0000000000..fa814a92b4 --- /dev/null +++ b/components/engine/utils/homedir.go @@ -0,0 +1,13 @@ +package utils + +import ( + "os" + "runtime" +) + +func GetHomeDir() string { + if runtime.GOOS == "windows" { + return os.Getenv("USERPROFILE") + } + return os.Getenv("HOME") +} From 62119ca587a89dd612cf4f6a02d0bbf4f153c535 Mon Sep 17 00:00:00 2001 From: Ahmet Alp Balkan Date: Fri, 6 Feb 2015 10:18:49 -0800 Subject: [PATCH 2/2] Export $HOME lookup to pkg/homedir Signed-off-by: Ahmet Alp Balkan Upstream-commit: f9ae2d4fd4c5b4afb7a2299b93a800f718b63a2a Component: engine --- components/engine/api/client/cli.go | 4 ++-- components/engine/api/client/commands.go | 3 ++- components/engine/docker/daemon.go | 3 ++- components/engine/docker/flags.go | 8 ++++---- components/engine/pkg/homedir/MAINTAINERS | 1 + components/engine/pkg/homedir/homedir.go | 16 ++++++++++++++++ components/engine/pkg/homedir/homedir_test.go | 17 +++++++++++++++++ components/engine/utils/homedir.go | 13 ------------- 8 files changed, 44 insertions(+), 21 deletions(-) create mode 100644 components/engine/pkg/homedir/MAINTAINERS create mode 100644 components/engine/pkg/homedir/homedir.go create mode 100644 components/engine/pkg/homedir/homedir_test.go delete mode 100644 components/engine/utils/homedir.go diff --git a/components/engine/api/client/cli.go b/components/engine/api/client/cli.go index 34b4f99413..fbf204f32c 100644 --- a/components/engine/api/client/cli.go +++ b/components/engine/api/client/cli.go @@ -14,10 +14,10 @@ import ( "text/template" "time" + "github.com/docker/docker/pkg/homedir" flag "github.com/docker/docker/pkg/mflag" "github.com/docker/docker/pkg/term" "github.com/docker/docker/registry" - "github.com/docker/docker/utils" ) type DockerCli struct { @@ -105,7 +105,7 @@ func (cli *DockerCli) Subcmd(name, signature, description string, exitOnError bo } func (cli *DockerCli) LoadConfigFile() (err error) { - cli.configFile, err = registry.LoadConfig(utils.GetHomeDir()) + cli.configFile, err = registry.LoadConfig(homedir.Get()) if err != nil { fmt.Fprintf(cli.err, "WARNING: %s\n", err) } diff --git a/components/engine/api/client/commands.go b/components/engine/api/client/commands.go index 01db93391d..54a699f4d1 100644 --- a/components/engine/api/client/commands.go +++ b/components/engine/api/client/commands.go @@ -34,6 +34,7 @@ import ( "github.com/docker/docker/opts" "github.com/docker/docker/pkg/archive" "github.com/docker/docker/pkg/fileutils" + "github.com/docker/docker/pkg/homedir" flag "github.com/docker/docker/pkg/mflag" "github.com/docker/docker/pkg/parsers" "github.com/docker/docker/pkg/parsers/filters" @@ -388,7 +389,7 @@ func (cli *DockerCli) CmdLogin(args ...string) error { var out2 engine.Env err = out2.Decode(stream) if err != nil { - cli.configFile, _ = registry.LoadConfig(utils.GetHomeDir()) + cli.configFile, _ = registry.LoadConfig(homedir.Get()) return err } registry.SaveConfig(cli.configFile) diff --git a/components/engine/docker/daemon.go b/components/engine/docker/daemon.go index 5f29b7d463..829cd3afb7 100644 --- a/components/engine/docker/daemon.go +++ b/components/engine/docker/daemon.go @@ -16,6 +16,7 @@ import ( _ "github.com/docker/docker/daemon/execdriver/native" "github.com/docker/docker/dockerversion" "github.com/docker/docker/engine" + "github.com/docker/docker/pkg/homedir" flag "github.com/docker/docker/pkg/mflag" "github.com/docker/docker/pkg/signal" "github.com/docker/docker/registry" @@ -36,7 +37,7 @@ func init() { func migrateKey() (err error) { // Migrate trust key if exists at ~/.docker/key.json and owned by current user - oldPath := filepath.Join(utils.GetHomeDir(), ".docker", defaultTrustKeyFile) + oldPath := filepath.Join(homedir.Get(), ".docker", defaultTrustKeyFile) newPath := filepath.Join(getDaemonConfDir(), defaultTrustKeyFile) if _, statErr := os.Stat(newPath); os.IsNotExist(statErr) && utils.IsFileOwner(oldPath) { defer func() { diff --git a/components/engine/docker/flags.go b/components/engine/docker/flags.go index d8c9e8c153..8706f09923 100644 --- a/components/engine/docker/flags.go +++ b/components/engine/docker/flags.go @@ -7,8 +7,8 @@ import ( "runtime" "github.com/docker/docker/opts" + "github.com/docker/docker/pkg/homedir" flag "github.com/docker/docker/pkg/mflag" - "github.com/docker/docker/utils" ) var ( @@ -18,14 +18,14 @@ var ( func init() { if dockerCertPath == "" { - dockerCertPath = filepath.Join(utils.GetHomeDir(), ".docker") + dockerCertPath = filepath.Join(homedir.Get(), ".docker") } } func getDaemonConfDir() string { // TODO: update for Windows daemon if runtime.GOOS == "windows" { - return filepath.Join(utils.GetHomeDir(), ".docker") + return filepath.Join(homedir.Get(), ".docker") } return "/etc/docker" } @@ -54,7 +54,7 @@ func setDefaultConfFlag(flag *string, def string) { if *flDaemon { *flag = filepath.Join(getDaemonConfDir(), def) } else { - *flag = filepath.Join(utils.GetHomeDir(), ".docker", def) + *flag = filepath.Join(homedir.Get(), ".docker", def) } } } diff --git a/components/engine/pkg/homedir/MAINTAINERS b/components/engine/pkg/homedir/MAINTAINERS new file mode 100644 index 0000000000..82733b88f7 --- /dev/null +++ b/components/engine/pkg/homedir/MAINTAINERS @@ -0,0 +1 @@ +Ahmet Alp Balkan (@ahmetalpbalkan) diff --git a/components/engine/pkg/homedir/homedir.go b/components/engine/pkg/homedir/homedir.go new file mode 100644 index 0000000000..f0246e99c4 --- /dev/null +++ b/components/engine/pkg/homedir/homedir.go @@ -0,0 +1,16 @@ +package homedir + +import ( + "os" + "runtime" +) + +// 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 { + if runtime.GOOS == "windows" { + return os.Getenv("USERPROFILE") + } + return os.Getenv("HOME") +} diff --git a/components/engine/pkg/homedir/homedir_test.go b/components/engine/pkg/homedir/homedir_test.go new file mode 100644 index 0000000000..b89cbf7a51 --- /dev/null +++ b/components/engine/pkg/homedir/homedir_test.go @@ -0,0 +1,17 @@ +package homedir + +import ( + "path/filepath" + "testing" +) + +func TestGet(t *testing.T) { + home := Get() + if home == "" { + t.Fatal("returned home directory is empty") + } + + if !filepath.IsAbs(home) { + t.Fatalf("returned path is not absolute: %s", home) + } +} diff --git a/components/engine/utils/homedir.go b/components/engine/utils/homedir.go deleted file mode 100644 index fa814a92b4..0000000000 --- a/components/engine/utils/homedir.go +++ /dev/null @@ -1,13 +0,0 @@ -package utils - -import ( - "os" - "runtime" -) - -func GetHomeDir() string { - if runtime.GOOS == "windows" { - return os.Getenv("USERPROFILE") - } - return os.Getenv("HOME") -}