Documentation and Rust Implementation to learn how most famous file formats store data.
Go to file
2024-02-08 21:33:35 +01:00
.github chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
.vscode chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
documentation docs(links): add YouTube Video, How are Images Compressed? JPEG In Depth 2024-01-28 19:47:52 +01:00
src chore: initial commit 2023-12-07 00:12:28 +01:00
.commitlintrc.json chore: setup tools 2024-01-27 19:49:31 +01:00
.editorconfig chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
.gitattributes chore: initial commit 2023-12-07 00:12:28 +01:00
.gitignore chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
.markdownlint-cli2.jsonc chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
.prettierrc.json chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
book.toml chore: initial commit 2023-12-07 00:12:28 +01:00
Cargo.lock chore: initial commit 2023-12-07 00:12:28 +01:00
Cargo.toml chore: initial commit 2023-12-07 00:12:28 +01:00
CODE_OF_CONDUCT.md chore: setup tools 2024-01-27 19:49:31 +01:00
CONTRIBUTING.md chore: setup tools 2024-01-27 19:49:31 +01:00
LICENSE chore: setup tools 2024-01-27 19:49:31 +01:00
package-lock.json chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
package.json chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00
README.md chore: simplify external tools dependency management 2024-02-08 21:33:35 +01:00

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: 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: 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 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 to be installed globally.

It can be installed using the following command:

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 >= v20.0.0 and npm >= v10.0.0.

npm clean-install

Usage

# 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 file.

📄 License

MIT