tomli
=====
`tomli` is a *format preserving* command-line tool for querying and editing TOML files.
This project is currently **under development** and the command-line interface
can change at any time.
Installation
------------
### Using Cargo
```
cargo install tomli
```
Usage
-----
By default, `tomli` will read from stdin unless `--filepath` is specified.
### Query expressions
`tomli` tries to use the same syntax as `jq` for query expressions.
The following expressions are currently supported:
* Key and table identifier paths, e.g `foo.bar` or `.` (whole document)
* Array indices, e.g. `foo[0]` or `foo.bar[0][1]`
### Query TOML files
**Examples**:
Get the value of the `name` key from the `package` table:
```
tomli query -f Cargo.toml package.name
```
Get the first element of the array called `bin`:
```
tomli query -f Cargo.toml bin[0]
```
### Edit TOML files
`tomli` currently supports the following types when setting a value:
* str (String)
* int ([64-bit signed integer](https://doc.rust-lang.org/std/primitive.i64.html))
* float ([64-bit floating point](https://doc.rust-lang.org/std/primitive.f64.html))
* bool (Boolean)
The value type can be specified with the `--type` argument.
If not type is specified, then `str` is used.
**Examples**:
Add a new key to the `package` table called `website`:
```
tomli set -f Cargo.toml package.website https://example.com
```
Set the `name` of the first element in the `bin` array to `tumli`:
```
tomli set -f Cargo.toml bin[0].name tumli
```
Add a new table called `website` to the first element of the `bin` array:
```
tomli set -f Cargo.toml bin[0].website.url https://example.com
```
Delete `name` in the table `package`:
```
tomli delete -f Cargo.toml package.name
```
Delete the first element in the array authors:
```
tomli delete -f Cargo.toml package.authors[0]
```