.github | ||
.vscode | ||
documentation | ||
src | ||
.commitlintrc.json | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.markdownlint-cli2.jsonc | ||
.prettierrc.json | ||
book.toml | ||
Cargo.lock | ||
Cargo.toml | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
LICENSE | ||
README.md |
FileFormats
Documentation and Rust Implementation to learn how most famous file formats store data.
📜 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 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.
- editorconfig-checker (
npm install --global editorconfig-checker@5.1.2
) - Prettier v3.2.4 (
npm install --global prettier@3.2.4
) - markdownlint-cli2 v0.12.1 (
npm install --global markdownlint-cli2@0.12.1
) - commitlint v18.6.0 (
npm install --global @commitlint/cli@18.6.0 @commitlint/config-conventional@18.6.0
)
Usage
# Run `fileformats` CLI
cargo run -- --help
# Documentation
cargo bin mdbook serve
# Build, Lint, and Test
cargo build
cargo test
cargo clippy --verbose -- -D warnings
cargo fmt -- --check
# External Linting Tools Usage (optional)
editorconfig-checker
prettier . --check
markdownlint-cli2
echo 'chore: try commitlint' | commitlint
💡 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.