Go-toml provides the following features for using data parsed from TOML documents:
Go-toml is designed to help cover use-cases not covered by reflection-based TOML parsing:
import "github.com/pelletier/go-toml"
Say you have a TOML file that looks like this:
[postgres] user = "pelletier" password = "mypassword"
Read the username and password like this:
import ( "fmt" "github.com/pelletier/go-toml" ) config, err := toml.LoadFile("config.toml") if err != nil { fmt.Println("Error ", err.Error()) } else { // retrieve data directly user := config.Get("postgres.user").(string) password := config.Get("postgres.password").(string) // or using an intermediate object configTree := config.Get("postgres").(*toml.TomlTree) user = configTree.Get("user").(string) password = configTree.Get("password").(string) fmt.Println("User is ", user, ". Password is ", password) // show where elements are in the file fmt.Println("User position: %v", configTree.GetPosition("user")) fmt.Println("Password position: %v", configTree.GetPosition("password")) // use a query to gather elements without walking the tree results, _ := config.Query("$..[user,password]") for ii, item := range results.Values() { fmt.Println("Query result %d: %v", ii, item) } }
The documentation and additional examples are available at godoc.org.
Go-toml provides two handy command line tools:
tomll
: Reads TOML files and lint them.
go install github.com/pelletier/go-toml/cmd/tomll tomll --help
tomljson
: Reads a TOML file and outputs its JSON representation.
go install github.com/pelletier/go-toml/cmd/tomjson tomljson --help
Feel free to report bugs and patches using GitHub's pull requests system on pelletier/go-toml. Any feedback would be much appreciated!
You have to make sure two kind of tests run:
You can run both of them using ./test.sh
.
The MIT License (MIT). Read LICENSE.