File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -32,6 +32,12 @@ func (e errPluginNotFound) Error() string {
3232 return "Error: No such CLI plugin: " + string (e )
3333}
3434
35+ // additionalSystemPluginDir is an optional system plugin directory that can be
36+ // set at build time using -ldflags -X.
37+ //
38+ // For example: -X github.com/docker/cli/cli-plugins/manager.additionalSystemPluginDir=/path/to/cli-plugins
39+ var additionalSystemPluginDir string
40+
3541// getPluginDirs returns the platform-specific locations to search for plugins
3642// in order of preference.
3743//
@@ -50,6 +56,9 @@ func getPluginDirs(cfg *configfile.ConfigFile) []string {
5056 }
5157 pluginDir := filepath .Join (config .Dir (), "cli-plugins" )
5258 pluginDirs = append (pluginDirs , pluginDir )
59+ if additionalSystemPluginDir != "" {
60+ pluginDirs = append (pluginDirs , additionalSystemPluginDir )
61+ }
5362 pluginDirs = append (pluginDirs , defaultSystemPluginDirs ... )
5463 return pluginDirs
5564}
Original file line number Diff line number Diff line change @@ -172,6 +172,12 @@ func TestGetPluginDirs(t *testing.T) {
172172 cli := test .NewFakeCli (nil )
173173
174174 pluginDir := filepath .Join (config .Dir (), "cli-plugins" )
175+ originalAdditionalSystemPluginDir := additionalSystemPluginDir
176+ additionalSystemPluginDir = ""
177+ t .Cleanup (func () {
178+ additionalSystemPluginDir = originalAdditionalSystemPluginDir
179+ })
180+
175181 expected := append ([]string {pluginDir }, defaultSystemPluginDirs ... )
176182
177183 pluginDirs := getPluginDirs (cli .ConfigFile ())
@@ -185,4 +191,10 @@ func TestGetPluginDirs(t *testing.T) {
185191 })
186192 pluginDirs = getPluginDirs (cli .ConfigFile ())
187193 assert .DeepEqual (t , expected , pluginDirs )
194+
195+ additionalSystemPluginDir = "qux"
196+ expected = append (extras , pluginDir , additionalSystemPluginDir )
197+ expected = append (expected , defaultSystemPluginDirs ... )
198+ pluginDirs = getPluginDirs (cli .ConfigFile ())
199+ assert .DeepEqual (t , expected , pluginDirs )
188200}
You can’t perform that action at this time.
0 commit comments