diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-08-01 20:21:02 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-08-01 20:55:03 +0300 |
commit | 0835677f33fe8fa89ee96e4c1b45e5711e10b461 (patch) | |
tree | 0552880f3cff7141b4410ba1a90b9b7d1a87fe32 /src/cmd | |
parent | 4c6206a2cb1f8c1efba9fd08a4d6b4fa7d09a6dc (diff) | |
download | obnam2-0835677f33fe8fa89ee96e4c1b45e5711e10b461.tar.gz |
feat: add command to resolve a generation ref into a chunk id
Sponsored-by: author
Diffstat (limited to 'src/cmd')
-rw-r--r-- | src/cmd/mod.rs | 1 | ||||
-rw-r--r-- | src/cmd/resolve.rs | 33 |
2 files changed, 34 insertions, 0 deletions
diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs index 7313a05..502ec5d 100644 --- a/src/cmd/mod.rs +++ b/src/cmd/mod.rs @@ -5,6 +5,7 @@ pub mod get_chunk; pub mod init; pub mod list; pub mod list_files; +pub mod resolve; pub mod restore; pub mod show_config; pub mod show_gen; diff --git a/src/cmd/resolve.rs b/src/cmd/resolve.rs new file mode 100644 index 0000000..a175655 --- /dev/null +++ b/src/cmd/resolve.rs @@ -0,0 +1,33 @@ +use crate::client::AsyncBackupClient; +use crate::config::ClientConfig; +use crate::error::ObnamError; +use structopt::StructOpt; +use tokio::runtime::Runtime; + +#[derive(Debug, StructOpt)] +pub struct Resolve { + generation: String, +} + +impl Resolve { + pub fn run(&self, config: &ClientConfig) -> Result<(), ObnamError> { + let rt = Runtime::new()?; + rt.block_on(self.run_async(config)) + } + + async fn run_async(&self, config: &ClientConfig) -> Result<(), ObnamError> { + let client = AsyncBackupClient::new(config)?; + let generations = client.list_generations().await?; + + match generations.resolve(&self.generation) { + Err(err) => { + return Err(err.into()); + } + Ok(old_id) => { + println!("{}", old_id); + } + }; + + Ok(()) + } +} |