mirror of https://github.com/docker/cli.git
config: Add GetFeature, SetFeature to ConfigFile
Signed-off-by: Laura Brehm <laurabrehm@hey.com>
This commit is contained in:
parent
b4d03289a7
commit
b463a15f78
|
@ -351,3 +351,26 @@ func (configFile *ConfigFile) SetPluginConfig(pluginname, option, value string)
|
|||
delete(configFile.Plugins, pluginname)
|
||||
}
|
||||
}
|
||||
|
||||
// GetFeature retrieves the given key from the config features map.
|
||||
func (configFile *ConfigFile) GetFeature(key string) (string, bool) {
|
||||
if configFile.Features == nil {
|
||||
return "", false
|
||||
}
|
||||
v, ok := configFile.Features[key]
|
||||
return v, ok
|
||||
}
|
||||
|
||||
// SetFeature sets the key to the given value in the config features map.
|
||||
// If the features field is nil, it initializes a new map.
|
||||
// Passing a value of "" will remove the key-value pair from the map.
|
||||
func (configFile *ConfigFile) SetFeature(key, value string) {
|
||||
if configFile.Features == nil {
|
||||
configFile.Features = make(map[string]string)
|
||||
}
|
||||
if value != "" {
|
||||
configFile.Features[key] = value
|
||||
} else {
|
||||
delete(configFile.Features, key)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -602,3 +602,57 @@ func TestPluginConfig(t *testing.T) {
|
|||
assert.NilError(t, err)
|
||||
golden.Assert(t, string(cfg), "plugin-config-2.golden")
|
||||
}
|
||||
|
||||
func TestSetFeature(t *testing.T) {
|
||||
t.Run("new feature", func(t *testing.T) {
|
||||
configFile := &ConfigFile{}
|
||||
|
||||
configFile.SetFeature("foo", "bar")
|
||||
|
||||
assert.Equal(t, "bar", configFile.Features["foo"])
|
||||
})
|
||||
|
||||
t.Run("update key", func(t *testing.T) {
|
||||
configFile := &ConfigFile{}
|
||||
|
||||
configFile.SetFeature("foo", "bar")
|
||||
assert.Equal(t, "bar", configFile.Features["foo"])
|
||||
|
||||
configFile.SetFeature("foo", "baz")
|
||||
assert.Equal(t, "baz", configFile.Features["foo"])
|
||||
})
|
||||
|
||||
t.Run("remove feature", func(t *testing.T) {
|
||||
configFile := &ConfigFile{}
|
||||
|
||||
configFile.SetFeature("foo", "bar")
|
||||
assert.Equal(t, "bar", configFile.Features["foo"])
|
||||
|
||||
configFile.SetFeature("foo", "")
|
||||
_, exists := configFile.Features["foo"]
|
||||
assert.Check(t, !exists)
|
||||
})
|
||||
}
|
||||
|
||||
func TestGetFeature(t *testing.T) {
|
||||
t.Run("feature exists", func(t *testing.T) {
|
||||
configFile := &ConfigFile{}
|
||||
configFile.Features = map[string]string{
|
||||
"foo": "bar",
|
||||
}
|
||||
|
||||
f, ok := configFile.GetFeature("foo")
|
||||
|
||||
assert.Check(t, ok)
|
||||
assert.Equal(t, "bar", f)
|
||||
})
|
||||
|
||||
t.Run("missing feature", func(t *testing.T) {
|
||||
configFile := &ConfigFile{}
|
||||
|
||||
f, ok := configFile.GetFeature("baz")
|
||||
|
||||
assert.Check(t, !ok)
|
||||
assert.Equal(t, "", f)
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue