# brarchive-rs
[](https://crates.io/crates/brarchive)
[](https://crates.io/crates/brarchive)
[](https://github.com/theaddonn/brarchive/blob/main/LICENSE)
Library for Bedrock Archives in Rust
So Mojang decided we don't have enough archive formats already and now invented their own for some reason, the `.brarchive` format.
It is basically nothing more than a simple uncompressed text archive format to bundle multiple files into one.
This library implements the format and includes a CLI to encode and decode directories/archives.
## Library Usage Examples
One can easily decode/deserialize archives using the library:
```rust
fn main() {
let bytes = include_bytes!("your_archive.brarchive");
let archive = brarchive::deserialize(&bytes).unwrap();
println!("{:#?}", archive);
}
```
One can also easily encode/serialize archives using the library:
```rust
use std::collections::BTreeMap;
fn main() {
// You can use any data-structure such as HashMap, BTreeMap, Vec
// Anything that implements IntoIterator<Item = (String, String)>
let archive = BTreeMap::from([
("entry_name".to_string(), "entry_content".to_string())
]);
let bytes = brarchive::serialize(&archive).unwrap();
println!("{:?}", bytes);
}
```
## CLI Usage Examples
The integrated [brarchive-cli](https://crates.io/crates/brarchive-cli) allows you
to easily encode and decode archives with the command line.
How to encode a folder:
```shell
brarchive-cli encode "path/to/input/folder" "path/to/output/file"
```
How to decode an archive:
```shell
brarchive-cli decode "path/to/input/file" "path/to/output/folder
```
You can also get help via the help command:
```shell
brarchive-cli help
```