| //go:build !windows |
| // +build !windows |
| |
| package plugins // import "github.com/docker/docker/pkg/plugins" |
| import ( |
| "path/filepath" |
| |
| "github.com/docker/docker/pkg/homedir" |
| "github.com/docker/docker/pkg/rootless" |
| ) |
| |
| func rootlessConfigPluginsPath() string { |
| configHome, err := homedir.GetConfigHome() |
| if err == nil { |
| return filepath.Join(configHome, "docker/plugins") |
| } |
| |
| return "/etc/docker/plugins" |
| } |
| |
| func rootlessLibPluginsPath() string { |
| libHome, err := homedir.GetLibHome() |
| if err == nil { |
| return filepath.Join(libHome, "docker/plugins") |
| } |
| |
| return "/usr/lib/docker/plugins" |
| } |
| |
| // SpecsPaths returns |
| // { "%programdata%\docker\plugins" } on Windows, |
| // { "/etc/docker/plugins", "/usr/lib/docker/plugins" } on Unix in non-rootless mode, |
| // { "$XDG_CONFIG_HOME/docker/plugins", "$HOME/.local/lib/docker/plugins" } on Unix in rootless mode |
| // with fallback to the corresponding path in non-rootless mode if $XDG_CONFIG_HOME or $HOME is not set. |
| func SpecsPaths() []string { |
| if rootless.RunningWithRootlessKit() { |
| return []string{rootlessConfigPluginsPath(), rootlessLibPluginsPath()} |
| } |
| |
| return []string{"/etc/docker/plugins", "/usr/lib/docker/plugins"} |
| } |