Update README for v2 work
This commit is contained in:
@@ -1,150 +1,20 @@
|
|||||||
# go-toml
|
# go-toml V2
|
||||||
|
|
||||||
Go library for the [TOML](https://toml.io/) format.
|
Development branch. Probably does not work.
|
||||||
|
|
||||||
This library supports TOML version
|
[👉 Discussion on github](https://github.com/pelletier/go-toml/discussions/471).
|
||||||
[v1.0.0-rc.3](https://toml.io/en/v1.0.0-rc.3)
|
|
||||||
|
|
||||||
[](https://pkg.go.dev/github.com/pelletier/go-toml)
|
## Todo
|
||||||
[](https://github.com/pelletier/go-toml/blob/master/LICENSE)
|
|
||||||
[](https://dev.azure.com/pelletierthomas/go-toml-ci/_build/latest?definitionId=1&branchName=master)
|
|
||||||
[](https://codecov.io/gh/pelletier/go-toml)
|
|
||||||
[](https://goreportcard.com/report/github.com/pelletier/go-toml)
|
|
||||||
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fpelletier%2Fgo-toml?ref=badge_shield)
|
|
||||||
|
|
||||||
## Features
|
- [ ] Unmarshal into maps.
|
||||||
|
- [ ] Attach comments to AST (gated by parser flag).
|
||||||
Go-toml provides the following features for using data parsed from TOML documents:
|
- [ ] Abstract AST.
|
||||||
|
- [ ] Rewrite AST to use a single array as storage instead of one allocation
|
||||||
* Load TOML documents from files and string data
|
per node.
|
||||||
* Easily navigate TOML structure using Tree
|
- [ ] Support Date / times.
|
||||||
* Marshaling and unmarshaling to and from data structures
|
- [ ] Support Unmarshaler interface.
|
||||||
* Line & column position data for all parsed elements
|
- [ ] Support struct tags annotations.
|
||||||
* [Query support similar to JSON-Path](query/)
|
- [ ] Benchmark!
|
||||||
* Syntax errors contain line and column numbers
|
|
||||||
|
|
||||||
## Import
|
|
||||||
|
|
||||||
```go
|
|
||||||
import "github.com/pelletier/go-toml"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage example
|
|
||||||
|
|
||||||
Read a TOML document:
|
|
||||||
|
|
||||||
```go
|
|
||||||
config, _ := toml.Load(`
|
|
||||||
[postgres]
|
|
||||||
user = "pelletier"
|
|
||||||
password = "mypassword"`)
|
|
||||||
// retrieve data directly
|
|
||||||
user := config.Get("postgres.user").(string)
|
|
||||||
|
|
||||||
// or using an intermediate object
|
|
||||||
postgresConfig := config.Get("postgres").(*toml.Tree)
|
|
||||||
password := postgresConfig.Get("password").(string)
|
|
||||||
```
|
|
||||||
|
|
||||||
Or use Unmarshal:
|
|
||||||
|
|
||||||
```go
|
|
||||||
type Postgres struct {
|
|
||||||
User string
|
|
||||||
Password string
|
|
||||||
}
|
|
||||||
type Config struct {
|
|
||||||
Postgres Postgres
|
|
||||||
}
|
|
||||||
|
|
||||||
doc := []byte(`
|
|
||||||
[Postgres]
|
|
||||||
User = "pelletier"
|
|
||||||
Password = "mypassword"`)
|
|
||||||
|
|
||||||
config := Config{}
|
|
||||||
toml.Unmarshal(doc, &config)
|
|
||||||
fmt.Println("user=", config.Postgres.User)
|
|
||||||
```
|
|
||||||
|
|
||||||
Or use a query:
|
|
||||||
|
|
||||||
```go
|
|
||||||
// use a query to gather elements without walking the tree
|
|
||||||
q, _ := query.Compile("$..[user,password]")
|
|
||||||
results := q.Execute(config)
|
|
||||||
for ii, item := range results.Values() {
|
|
||||||
fmt.Printf("Query result %d: %v\n", ii, item)
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
## Documentation
|
|
||||||
|
|
||||||
The documentation and additional examples are available at
|
|
||||||
[pkg.go.dev](https://pkg.go.dev/github.com/pelletier/go-toml).
|
|
||||||
|
|
||||||
## Tools
|
|
||||||
|
|
||||||
Go-toml provides three handy command line tools:
|
|
||||||
|
|
||||||
* `tomll`: Reads TOML files and lints 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/tomljson
|
|
||||||
tomljson --help
|
|
||||||
```
|
|
||||||
|
|
||||||
* `jsontoml`: Reads a JSON file and outputs a TOML representation.
|
|
||||||
|
|
||||||
```
|
|
||||||
go install github.com/pelletier/go-toml/cmd/jsontoml
|
|
||||||
jsontoml --help
|
|
||||||
```
|
|
||||||
|
|
||||||
### Docker image
|
|
||||||
|
|
||||||
Those tools are also availble as a Docker image from
|
|
||||||
[dockerhub](https://hub.docker.com/r/pelletier/go-toml). For example, to
|
|
||||||
use `tomljson`:
|
|
||||||
|
|
||||||
```
|
|
||||||
docker run -v $PWD:/workdir pelletier/go-toml tomljson /workdir/example.toml
|
|
||||||
```
|
|
||||||
|
|
||||||
Only master (`latest`) and tagged versions are published to dockerhub. You
|
|
||||||
can build your own image as usual:
|
|
||||||
|
|
||||||
```
|
|
||||||
docker build -t go-toml .
|
|
||||||
```
|
|
||||||
|
|
||||||
## Contribute
|
|
||||||
|
|
||||||
Feel free to report bugs and patches using GitHub's pull requests system on
|
|
||||||
[pelletier/go-toml](https://github.com/pelletier/go-toml). Any feedback would be
|
|
||||||
much appreciated!
|
|
||||||
|
|
||||||
### Run tests
|
|
||||||
|
|
||||||
`go test ./...`
|
|
||||||
|
|
||||||
### Fuzzing
|
|
||||||
|
|
||||||
The script `./fuzz.sh` is available to
|
|
||||||
run [go-fuzz](https://github.com/dvyukov/go-fuzz) on go-toml.
|
|
||||||
|
|
||||||
## Versioning
|
|
||||||
|
|
||||||
Go-toml follows [Semantic Versioning](http://semver.org/). The supported version
|
|
||||||
of [TOML](https://github.com/toml-lang/toml) is indicated at the beginning of
|
|
||||||
this document. The last two major versions of Go are supported
|
|
||||||
(see [Go Release Policy](https://golang.org/doc/devel/release.html#policy)).
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user