mirror of
https://github.com/containers/podman.git
synced 2025-09-17 23:18:39 +08:00

Vendor in buildah and use as much of commit and bug as possible for podman build and commit. Resolves #586 Signed-off-by: baude <bbaude@redhat.com> Closes: #681 Approved by: mheon
31 lines
772 B
Go
31 lines
772 B
Go
package strslice
|
|
|
|
import "encoding/json"
|
|
|
|
// StrSlice represents a string or an array of strings.
|
|
// We need to override the json decoder to accept both options.
|
|
type StrSlice []string
|
|
|
|
// UnmarshalJSON decodes the byte slice whether it's a string or an array of
|
|
// strings. This method is needed to implement json.Unmarshaler.
|
|
func (e *StrSlice) UnmarshalJSON(b []byte) error {
|
|
if len(b) == 0 {
|
|
// With no input, we preserve the existing value by returning nil and
|
|
// leaving the target alone. This allows defining default values for
|
|
// the type.
|
|
return nil
|
|
}
|
|
|
|
p := make([]string, 0, 1)
|
|
if err := json.Unmarshal(b, &p); err != nil {
|
|
var s string
|
|
if err := json.Unmarshal(b, &s); err != nil {
|
|
return err
|
|
}
|
|
p = append(p, s)
|
|
}
|
|
|
|
*e = p
|
|
return nil
|
|
}
|