mirror of
https://github.com/optim-enterprises-bv/vault.git
synced 2025-11-02 03:27:54 +00:00
helper/kv-builder: blank values should not panic
This commit is contained in:
@@ -78,30 +78,32 @@ func (b *Builder) add(raw string) error {
|
||||
}
|
||||
key, value := parts[0], parts[1]
|
||||
|
||||
if len(value) > 0 && value[0] == '@' {
|
||||
contents, err := ioutil.ReadFile(value[1:])
|
||||
if err != nil {
|
||||
return fmt.Errorf("error reading file: %s", err)
|
||||
}
|
||||
if len(value) > 0 {
|
||||
if value[0] == '@' {
|
||||
contents, err := ioutil.ReadFile(value[1:])
|
||||
if err != nil {
|
||||
return fmt.Errorf("error reading file: %s", err)
|
||||
}
|
||||
|
||||
value = string(contents)
|
||||
} else if value[0] == '\\' && value[1] == '@' {
|
||||
value = value[1:]
|
||||
} else if value == "-" {
|
||||
if b.Stdin == nil {
|
||||
return fmt.Errorf("stdin is not supported")
|
||||
}
|
||||
if b.stdin {
|
||||
return fmt.Errorf("stdin already consumed")
|
||||
}
|
||||
b.stdin = true
|
||||
value = string(contents)
|
||||
} else if value[0] == '\\' && value[1] == '@' {
|
||||
value = value[1:]
|
||||
} else if value == "-" {
|
||||
if b.Stdin == nil {
|
||||
return fmt.Errorf("stdin is not supported")
|
||||
}
|
||||
if b.stdin {
|
||||
return fmt.Errorf("stdin already consumed")
|
||||
}
|
||||
b.stdin = true
|
||||
|
||||
var buf bytes.Buffer
|
||||
if _, err := io.Copy(&buf, b.Stdin); err != nil {
|
||||
return err
|
||||
}
|
||||
var buf bytes.Buffer
|
||||
if _, err := io.Copy(&buf, b.Stdin); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
value = buf.String()
|
||||
value = buf.String()
|
||||
}
|
||||
}
|
||||
|
||||
b.result[key] = value
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
|
||||
func TestBuilder_basic(t *testing.T) {
|
||||
var b Builder
|
||||
err := b.Add("foo=bar", "bar=baz")
|
||||
err := b.Add("foo=bar", "bar=baz", "baz=")
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
@@ -16,6 +16,7 @@ func TestBuilder_basic(t *testing.T) {
|
||||
expected := map[string]interface{}{
|
||||
"foo": "bar",
|
||||
"bar": "baz",
|
||||
"baz": "",
|
||||
}
|
||||
actual := b.Map()
|
||||
if !reflect.DeepEqual(actual, expected) {
|
||||
|
||||
Reference in New Issue
Block a user