56 lines
2.0 KiB
Markdown
56 lines
2.0 KiB
Markdown
# Description
|
|
This tool "traduit" (french for translate) data formats. It was made in the hope to bring serde to the cli (serdi ^^). But that not exaclty what serde is about and I have no affiliation with them so I did not want to namesquat.
|
|
|
|
# Installation
|
|
First install [the rust toolchain](https://www.rust-lang.org/tools/install) and then execute the following command:
|
|
```sh
|
|
cargo install tradaf
|
|
```
|
|
|
|
# Usage example
|
|
Prettify (or minify) some data format for ease of reading (resp: compact and have less data to save/transfert)
|
|
```sh
|
|
tradaf json json --pretty < simple.json
|
|
```
|
|
|
|
Litterally transcode between data formats
|
|
```sh
|
|
tradaf ron yaml < examples/standard.ron
|
|
```
|
|
|
|
Transcode into JSON so we can use `jq`, do some transformations and then transcode again into another format for viewing
|
|
```sh
|
|
tradaf RON json < examples/gameConfig.ron | jq .key_bindings | tradaf Json yaml
|
|
```
|
|
|
|
# TODOS
|
|
* [ ] Implement all [data formats](https://serde.rs/#data-formats), or at least the one that expose a serde serializer or deserializer.
|
|
* [ ] BSON
|
|
* [ ] CBOR
|
|
* [ ] DBus (not sure it is working, but it compile…)
|
|
* [ ] Envy (deserialization only)
|
|
* [ ] Envy store (deserialization only)
|
|
* [ ] GVariant => See DBus: the same crate propose both
|
|
* [X] JSON
|
|
* [ ] JSON5
|
|
* [X] Deserialization
|
|
* [ ] Serialization
|
|
* [X] S-Expressions (lisp)
|
|
* [X] Pickle
|
|
* [ ] Test properly both way
|
|
* [ ] Query String (URL)
|
|
* [ ] Deserialization
|
|
* [X] Serialization
|
|
* [ ] MessagePack
|
|
* [ ] Deserialization
|
|
* [X] Serialization
|
|
* [X] RON
|
|
* [ ] TOML
|
|
* [X] YAML
|
|
* [ ] …
|
|
* [ ] Add tests for each serializer and each deserializer (at least one)
|
|
* [ ] Check if crates have features that we should enable/disable
|
|
* [ ] `zvariant` looks to include async runtime by default
|
|
* [ ] Check my notes for each data format and open an issue on the crates to point problem/present my project and ask for help
|
|
* [ ] Add proper error handling (find a mentor to explain me propper error management: struct, enum, … and then use anyhow/this_error if needed)
|