Go to file
2024-12-22 21:09:55 +01:00
scripts Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00
src Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00
test-data Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00
tests Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00
.gitignore POC: Inital commit (transcode json, ron, yaml) 2022-09-17 20:29:35 +02:00
Cargo.lock Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00
Cargo.toml Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00
LICENSE.md Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00
README.md Bubble up the error to main instead of panicking 2024-12-22 21:09:55 +01:00

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:

cargo install tradaf

Usage example

Prettify (or minify) some data format for ease of reading (resp: compact and have less data to save/transfert)

tradaf json json --pretty < test-data/simple.json

Litterally transcode between data formats

tradaf ron yaml < test-data/standard.ron

Transcode into JSON so we can use jq, do some transformations and then transcode again into another format for viewing

tradaf RON json < test-data/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
      • 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
    • JSON
    • [-] JSON5
      • Deserialization
      • Serialization
    • https://github.com/Lucretiel/kaydle
    • S-Expressions (lisp)
    • Pickle
      • Test properly both way
    • [-] Query String (URL)
      • Deserialization
      • Serialization
    • [-] MessagePack
      • Deserialization
      • Serialization
    • RON
    • TOML
    • 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
  • Check if other data format have pretty formatting available
  • Add proper error handling (find a mentor to explain me propper error management: struct, enum, … and then use anyhow/this_error if needed)
  • Transform any script idea into an xtask