tomli 0.3.1

A simple CLI for quering and editing TOML files
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
```

### Release tarball

```
wget https://github.com/blinxen/tomli/releases/download/$VERSION/tomli.tar.gz
```


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]
```

License
-------

The source code is primarily distributed under the terms of the MIT License.
See LICENSE for details.