diff options
Diffstat (limited to 'src/cmd/list.rs')
-rw-r--r-- | src/cmd/list.rs | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/src/cmd/list.rs b/src/cmd/list.rs index 8766e34..8bc6978 100644 --- a/src/cmd/list.rs +++ b/src/cmd/list.rs @@ -1,12 +1,36 @@ -use crate::client::{BackupClient, ClientConfig}; +//! The `list` subcommand. -pub fn list(config: &ClientConfig) -> anyhow::Result<()> { - let client = BackupClient::new(&config.server_url)?; +use crate::chunk::ClientTrust; +use crate::client::BackupClient; +use crate::config::ClientConfig; +use crate::error::ObnamError; +use clap::Parser; +use tokio::runtime::Runtime; - let generations = client.list_generations()?; - for finished in generations.iter() { - println!("{} {}", finished.id(), finished.ended()); +/// List generations on the server. +#[derive(Debug, Parser)] +pub struct List {} + +impl List { + /// Run the command. + pub fn run(&self, config: &ClientConfig) -> Result<(), ObnamError> { + let rt = Runtime::new()?; + rt.block_on(self.run_async(config)) } - Ok(()) + async fn run_async(&self, config: &ClientConfig) -> Result<(), ObnamError> { + let client = BackupClient::new(config)?; + let trust = client + .get_client_trust() + .await? + .or_else(|| Some(ClientTrust::new("FIXME", None, "".to_string(), vec![]))) + .unwrap(); + + let generations = client.list_generations(&trust); + for finished in generations.iter() { + println!("{} {}", finished.id(), finished.ended()); + } + + Ok(()) + } } |