Handle TOML Library Licensing

This patch updates the package used for parsing TOML content from
"github.com/BurntSushi/toml" to "github.com/pelletier/go-toml" as the
latter uses a more accepted OSS license (MIT), enabling the inclusion of
Viper or projects that depend on Viper in projects that have licensing
requirements incongruent with the license of the previous TOML package.

This patch replaces the PR https://github.com/spf13/viper/pull/208 after
discussing the matter with @spf13 and deciding to update the TOML parser
instead of making TOML build-optional.
This commit is contained in:
Schley Andrew Kutz 2016-08-05 02:15:24 -05:00 committed by Bjørn Erik Pedersen
parent b53595fb56
commit 7402856f06

View file

@ -21,9 +21,9 @@ import (
"strings" "strings"
"unicode" "unicode"
"github.com/BurntSushi/toml"
"github.com/hashicorp/hcl" "github.com/hashicorp/hcl"
"github.com/magiconair/properties" "github.com/magiconair/properties"
toml "github.com/pelletier/go-toml"
"github.com/spf13/cast" "github.com/spf13/cast"
jww "github.com/spf13/jwalterweatherman" jww "github.com/spf13/jwalterweatherman"
"gopkg.in/yaml.v2" "gopkg.in/yaml.v2"
@ -155,9 +155,14 @@ func unmarshallConfigReader(in io.Reader, c map[string]interface{}, configType s
} }
case "toml": case "toml":
if _, err := toml.Decode(buf.String(), &c); err != nil { tree, err := toml.LoadReader(buf)
if err != nil {
return ConfigParseError{err} return ConfigParseError{err}
} }
tmap := tree.ToMap()
for k, v := range tmap {
c[k] = v
}
case "properties", "props", "prop": case "properties", "props", "prop":
var p *properties.Properties var p *properties.Properties