A modern archive format for serializing files, like Tar or Zip Contents ======== - [Features](#features) - [Building](#building) - [Contributing](#contributing) - [Raodmap](#roadmap) ## Features For a more full specification of the format, please see [Format.md](Format.md) - No padding between metadata fields or data segments so it only stores the data required to recreate the original file - Optional inline checksumming using a choice of md5, sha1 or sha256 algorithms to ensure data integrity - Easily parallelized library code - Uses generic `Read` and `Write` interfaces from Rust `std` to support reading archive nodes from anything that can supply a stream of data ## Building The minimum supported Rust version (MSRV) for this project is currently Rust 1.65. The crate can be added to your project by adding it to your `Cargo.toml` file. Until the api is more mature you will have to use the crate from it's git repository rather than from the crates.io package registry. ```Toml [dependencies.haggis] git = "https://codeberg.org/jeang3nie/haggis.git" ``` ## Contributing Contributions are always welcome. Please run `cargo fmt` and `cargo clippy` and fix any issues before sending pull requests on Codeberg or patches via `git send-email`. In addition to contributing to the Rust implementation here, it would be welcome to see Haggis implemented in other languages. ## Roadmap - [x] Create and extract archives - [x] List archive nodes - [ ] Override user/group when creating archives - [x] Override user/group when extracting archives - [ ] Automatically detect zstd compressed archives