diff --git a/go.mod b/go.mod index 08eb443b..9aaf78ff 100644 --- a/go.mod +++ b/go.mod @@ -8,5 +8,5 @@ require ( github.com/spf13/cobra v0.0.5 github.com/spf13/viper v1.4.0 github.com/stretchr/testify v1.3.0 - gopkg.in/laverya/yaml.v3 v3.0.0-beta2 + gopkg.in/laverya/yaml.v3 v3.0.0-beta3 ) diff --git a/go.sum b/go.sum index 7f8bb6c7..2cd15285 100644 --- a/go.sum +++ b/go.sum @@ -151,8 +151,8 @@ gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLks gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/laverya/yaml.v3 v3.0.0-beta2 h1:De7CEwzluLnzInHYkanpHdGq9sRmXHyEQ8bZB+YOKKM= -gopkg.in/laverya/yaml.v3 v3.0.0-beta2/go.mod h1:b5w3YJ/R5MxUkx01JYEDFaW9XiYHxEm6iaCHIN+jaRE= +gopkg.in/laverya/yaml.v3 v3.0.0-beta3 h1:LBRobUz9D6nMyfyoE42elUYIaKpUhmNzYcIhOKdEuEc= +gopkg.in/laverya/yaml.v3 v3.0.0-beta3/go.mod h1:b5w3YJ/R5MxUkx01JYEDFaW9XiYHxEm6iaCHIN+jaRE= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/vendor/gopkg.in/laverya/yaml.v3/decode.go b/vendor/gopkg.in/laverya/yaml.v3/decode.go index 6ca0fa00..2ee4223d 100644 --- a/vendor/gopkg.in/laverya/yaml.v3/decode.go +++ b/vendor/gopkg.in/laverya/yaml.v3/decode.go @@ -627,12 +627,9 @@ func (d *decoder) scalar(n *Node, out reflect.Value) bool { case string: // This offers some compatibility with the 1.1 spec (https://yaml.org/type/bool.html). // It only works if explicitly attempting to unmarshal into a typed bool value. - switch resolved { - case "y", "Y", "yes", "Yes", "YES", "on", "On", "ON": - out.SetBool(true) - return true - case "n", "N", "no", "No", "NO", "off", "Off", "OFF": - out.SetBool(false) + val, found := boolMap[resolved] + if found { + out.SetBool(val) return true } } diff --git a/vendor/gopkg.in/laverya/yaml.v3/encode.go b/vendor/gopkg.in/laverya/yaml.v3/encode.go index edcce207..76a2329d 100644 --- a/vendor/gopkg.in/laverya/yaml.v3/encode.go +++ b/vendor/gopkg.in/laverya/yaml.v3/encode.go @@ -320,6 +320,11 @@ func (e *encoder) stringv(tag string, in reflect.Value) { // there's no need to quote it. rtag, _ := resolve("", s) canUsePlain = rtag == strTag && !isBase60Float(s) + + // Check to see if this is a v1.1 yaml bool string + // if it is, require quotes to preserve backwards compatibility + _, is11BoolString := boolMap[s] + canUsePlain = !is11BoolString && canUsePlain } // Note: it's possible for user code to emit invalid YAML // if they explicitly specify a tag and a string containing diff --git a/vendor/gopkg.in/laverya/yaml.v3/resolve.go b/vendor/gopkg.in/laverya/yaml.v3/resolve.go index 64ae8880..acfb55d8 100644 --- a/vendor/gopkg.in/laverya/yaml.v3/resolve.go +++ b/vendor/gopkg.in/laverya/yaml.v3/resolve.go @@ -31,6 +31,7 @@ type resolveMapItem struct { var resolveTable = make([]byte, 256) var resolveMap = make(map[string]resolveMapItem) +var boolMap = make(map[string]bool) func init() { t := resolveTable @@ -65,6 +66,26 @@ func init() { m[s] = resolveMapItem{item.v, item.tag} } } + + // the remaining bool values from the 1.1 spec (https://yaml.org/type/bool.html) + boolMap = map[string]bool{ + "y": true, + "Y": true, + "yes": true, + "Yes": true, + "YES": true, + "on": true, + "On": true, + "ON": true, + "n": false, + "N": false, + "no": false, + "No": false, + "NO": false, + "off": false, + "Off": false, + "OFF": false, + } } const ( diff --git a/vendor/modules.txt b/vendor/modules.txt index 94d4bb79..ad337e3b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -46,7 +46,7 @@ golang.org/x/sys/unix # golang.org/x/text v0.3.0 golang.org/x/text/transform golang.org/x/text/unicode/norm -# gopkg.in/laverya/yaml.v3 v3.0.0-beta2 +# gopkg.in/laverya/yaml.v3 v3.0.0-beta3 gopkg.in/laverya/yaml.v3 # gopkg.in/yaml.v2 v2.2.2 gopkg.in/yaml.v2