# simple-archive
`simple-archive` is the simplest possbible crate to handle compressed archives and file streams.
Under the hood it uses the libarchive library to handle data.
There is a direct ffi covnersion from the libarchive library that can also be used, but
the purpose of the library is to provide a simpler API in the rust world on top of libarchive.
---
## Dependencies
`libarchive` must be installed. At the time of this writing the only version tested with the
library is 3.7.4. Older version might work just fine, but it's simply untested
Since `libarchive` is an umbrella on top of other libraries, depending on the desired data
format to be handled, additional libraries should also be installed in the system.
## Features
* read file formats compatible with libarchive
* filters on top of output format files supported by libarchive
* directly compress source data object with Read+Seek traits
* extract objects from archive data.
Compress files
```rust
use std::fs::File;
let output = File::create("tests/fixtures_out/compressed.tar.gz").unwrap();
let mut a = ArchiveWriter::new(output).unwrap();
a.set_output_targz().unwrap();
a.open().unwrap();
a.add_file("/path/to/your/file", "path/inside/output/archive").unwrap();
```
Uncompress files
```rust
use std::fs::File;
let input = File::open("tests/fixtures_out/compressed.tar.gz").unwrap();
let mut a = ArchiveReader::new(output).unwrap();
...
```
## License
Licensed under either of
* MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)