Skip to main content

world_replace_bundle/
world_replace_bundle.rs

1use brdb::{BrFsReader, Brdb, IntoReader, pending::BrPendingFs};
2use std::path::PathBuf;
3
4/// Copies the Bundle.json from dst.brdb to src.brdb, allowing you to reupload
5/// src.brdb to the gallery in place of dst.brdb.
6fn main() -> Result<(), Box<dyn std::error::Error>> {
7    let meta_dst = PathBuf::from("dst.brdb");
8    let meta_src = PathBuf::from("src.brdb");
9
10    let src_f = Brdb::open(meta_src)?.into_reader();
11    let dst_f = Brdb::open(meta_dst)?.into_reader();
12
13    println!(
14        "replacing: {}",
15        String::from_utf8(dst_f.read_file("Meta/Bundle.json")?).unwrap()
16    );
17    println!(
18        "with: {}",
19        String::from_utf8(src_f.read_file("Meta/Bundle.json")?).unwrap()
20    );
21
22    let patch = BrPendingFs::Root(vec![(
23        "Meta".to_owned(),
24        BrPendingFs::Folder(Some(vec![(
25            "Bundle.json".to_string(),
26            BrPendingFs::File(Some(src_f.read_file("Meta/Bundle.json")?)),
27        )])),
28    )]);
29
30    dst_f.write_pending(
31        "Replace Bundle",
32        dst_f.to_pending_patch()?.with_patch(patch)?,
33    )?;
34
35    Ok(())
36}