91 lines
3.1 KiB
Markdown
91 lines
3.1 KiB
Markdown
<h1 align="center">FileFormats</h1>
|
|
|
|
<p align="center">
|
|
<strong>Documentation and <a href="https://www.rust-lang.org/">Rust</a> Implementation to learn how most famous file formats store data.</strong>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<a href="./CONTRIBUTING.md"><img src="https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat" alt="CONTRIBUTING" /></a>
|
|
<a href="./LICENSE"><img src="https://img.shields.io/badge/licence-MIT-blue.svg" alt="Licence MIT"/></a>
|
|
<a href="./CODE_OF_CONDUCT.md"><img src="https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg" alt="Contributor Covenant" /></a>
|
|
<br />
|
|
<a href="https://www.rust-lang.org/"><img src="https://img.shields.io/badge/Rust%20MSRV-v1.74.0-blue?logo=rust" alt="Rust" /></a>
|
|
<a href="https://conventionalcommits.org"><img src="https://img.shields.io/badge/Conventional%20Commits-1.0.0-yellow.svg" alt="Conventional Commits" /></a>
|
|
</p>
|
|
|
|
<p align="center">
|
|
<img src="./documentation/images/logo.png" width="200px" alt="FileFormats Logo" />
|
|
</p>
|
|
|
|
---
|
|
|
|
## 📜 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)
|