FileFormats

Documentation and Rust Implementation to learn how most famous file formats store data.

CONTRIBUTING Licence MIT Contributor Covenant
Rust Conventional Commits

FileFormats Logo

--- ## 📜 About - [Documentation](./documentation/): Explains the theory for each file format, the advantages and disadvantages compared to other file formats in the same category, why it is stored in that way, and the **User Manual** for the implementation. - [`fileformats` Implementation](./src/): **Command-Line Interface and Rust Library** to cover most common features of each file format, and understand practically how the theory works. The features of the implementation include, but is not limited to, **read, write, convert, and compare** between file formats. ## Getting Started ### Prerequisites #### Rust Toolchain The current Minimum Supported [Rust](https://www.rust-lang.org/) Version (MSRV) is **v1.74.0**. The project is **tested** against the following Rust versions: - **Minimum Supported Rust Version (MSRV): v1.74.0** - **Latest Stable Version** #### Rust Globally Installed Crate The project requires [cargo-run-bin v1.7.2](https://crates.io/crates/cargo-run-bin) to be installed globally. It can be installed using the following command: ```sh cargo install cargo-run-bin@1.7.2 ``` #### External Linting Tools (optional) **External linting tools** are used to ensure a consistent code style (external to Rust) and commit message format. They are **used in the Continuous Integration (CI)** pipeline and **can be optionally used locally**. They have to be installed using [Node.js](https://nodejs.org/) >= v20.0.0 and [npm](https://www.npmjs.com/) >= v10.0.0. ```sh npm clean-install ``` ### Usage ```sh # Run `fileformats` CLI cargo run -- --help # Documentation cargo bin mdbook serve # Build, Lint, and Test Usage cargo build cargo test cargo clippy --verbose -- -D warnings cargo fmt -- --check # External Linting Tools Usage (optional) echo 'chore: try commitlint' | npm run lint:commit npm run lint:editorconfig npm run lint:markdown npm run lint:prettier ``` ## 💡 Contributing Anyone can help to improve the project, submit a Feature Request, a bug report or even correct a simple spelling mistake. The steps to contribute can be found in the [CONTRIBUTING.md](./CONTRIBUTING.md) file. ## 📄 License [MIT](./LICENSE)