Crates.io | arkiv |
lib.rs | arkiv |
version | 0.7.0 |
source | src |
created_at | 2023-09-15 17:44:14.405473 |
updated_at | 2023-09-30 15:13:20.022764 |
description | library providing convenience function to manipulate various kind of archive (zip, tar.gz, tar.xz, ... ) |
homepage | https://github.com/meuter/arkiv-rs |
repository | https://github.com/meuter/arkiv-rs |
max_upload_size | |
id | 973842 |
size | 55,531 |
Arkiv is a convenience library to download, open, consult and extract archives of various format through a single consistent interface.
sample.zip
(requires the zip feature).sample.tar
(requires the tar
feature).sample.tgz
or sample.tar.gz
(requires tar
and gzip
features).sample.tar.xz
(requires tar
and xz
features).sample.tar.bz2
(requires tar
and bzip
features).sample.tar.zstd
or sample.tar.zst
(requires tar
and zstd
features).use arkiv::{Result, Archive};
fn main() -> Result<()> {
// open the archive from a local file
let mut archive = arkiv::Archive::open("path/to/archive.tar.xz")?;
// or download it over HTTP(S) - requires the `download` feature.
#[cfg(feature="download")]
let mut archive = {
let url = "https://github.com/meuter/arkiv-rs/raw/main/tests/sample/sample.tar.zstd";
arkiv::Archive::download(url)?
};
// iterate over entries
for entry in archive.entries_iter()? {
let entry = entry?;
println!("{} {}", entry.size(), entry.path().display());
}
// extract the archive (perserves permission on unix targets)
archive.unpack("/tmp/")?;
Ok(())
}