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 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, or at least the one that expose a serde serializer or deserializer.
- [-] Bencode
- [X] Deserialization
- [ ] Serialization
- [ ] BSON
- [ ] CBOR
- [-] DBus (not sure it is working, but it compile…)
- [ ] DynamoDB
- [ ] Envy (deserialization only)
- [ ] Envy store (deserialization only)
- [ ] FlexBuffer
- The
Serializer
and Deserializer
exposed does not work with serde-transcode.
- [-] GVariant => See DBus: the same crate propose both
- [ ] HJSON
- [X] JSON
- [-] JSON5
- [X] Deserialization
- [ ] Serialization
- [ ] https://github.com/Lucretiel/kaydle
- [ ] 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)