arkiv

Crates.ioarkiv
lib.rsarkiv
version0.7.0
sourcesrc
created_at2023-09-15 17:44:14.405473
updated_at2023-09-30 15:13:20.022764
descriptionlibrary providing convenience function to manipulate various kind of archive (zip, tar.gz, tar.xz, ... )
homepagehttps://github.com/meuter/arkiv-rs
repositoryhttps://github.com/meuter/arkiv-rs
max_upload_size
id973842
size55,531
Cédric Meuter (meuter)

documentation

README

Arkiv

Crates.io Docs.rs Crates.io Crates.io

Build Build Clippy

Arkiv is a convenience library to download, open, consult and extract archives of various format through a single consistent interface.

Supported Formats

  • 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).

Usage

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(())
}
Commit count: 53

cargo fmt