mirror of
https://github.com/Start9Labs/patch-db.git
synced 2026-03-26 02:11:54 +00:00
44 lines
1.4 KiB
Rust
44 lines
1.4 KiB
Rust
use patch_db::json_ptr::{JsonPointer, PtrSegment};
|
|
use serde_json::Value;
|
|
|
|
#[tokio::main]
|
|
async fn main() {
|
|
let mut app = clap::App::new("patch-db-util")
|
|
.subcommand(
|
|
clap::Command::new("dump").arg(
|
|
clap::Arg::new("PATH")
|
|
.required(true)
|
|
.help("Path to the database file"),
|
|
),
|
|
)
|
|
.subcommand(
|
|
clap::Command::new("from-dump").arg(
|
|
clap::Arg::new("PATH")
|
|
.required(true)
|
|
.help("Path to the database file"),
|
|
),
|
|
);
|
|
|
|
match app.clone().get_matches().subcommand() {
|
|
Some(("dump", matches)) => {
|
|
let path = matches.value_of("PATH").unwrap();
|
|
let db = patch_db::PatchDb::open(path).await.unwrap();
|
|
let dump = db.dump().await;
|
|
serde_json::to_writer_pretty(&mut std::io::stdout(), &dump.value).unwrap();
|
|
println!();
|
|
}
|
|
Some(("from-dump", matches)) => {
|
|
let path = matches.value_of("PATH").unwrap();
|
|
let value: Value = serde_json::from_reader(&mut std::io::stdin()).unwrap();
|
|
let db = patch_db::PatchDb::open(path).await.unwrap();
|
|
db.put(
|
|
&JsonPointer::<&str, (&[PtrSegment], &[PtrSegment])>::default(),
|
|
&value,
|
|
)
|
|
.await
|
|
.unwrap();
|
|
}
|
|
_ => app.print_long_help().unwrap(),
|
|
}
|
|
}
|