diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-04-10 09:26:19 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-04-10 10:29:27 +0300 |
commit | 2aa0eef599db13db6802a75a8b285d75d8035033 (patch) | |
tree | 9816a250a3dd8870e6ea8fe74658473f340ffa79 /src/cmd/list_files.rs | |
parent | 7a32584448ebe00bdb45aa5daf506ce37c4811e0 (diff) | |
download | obnam2-2aa0eef599db13db6802a75a8b285d75d8035033.tar.gz |
refactor: struct ListFiles subcommand
Diffstat (limited to 'src/cmd/list_files.rs')
-rw-r--r-- | src/cmd/list_files.rs | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/cmd/list_files.rs b/src/cmd/list_files.rs index d490e85..22b102e 100644 --- a/src/cmd/list_files.rs +++ b/src/cmd/list_files.rs @@ -3,22 +3,31 @@ use crate::client::BackupClient; use crate::config::ClientConfig; use crate::error::ObnamError; use crate::fsentry::{FilesystemEntry, FilesystemKind}; +use structopt::StructOpt; use tempfile::NamedTempFile; -pub fn list_files(config: &ClientConfig, gen_ref: &str) -> Result<(), ObnamError> { - let temp = NamedTempFile::new()?; +#[derive(Debug, StructOpt)] +pub struct ListFiles { + #[structopt(default_value = "latest")] + gen_id: String, +} - let client = BackupClient::new(config)?; +impl ListFiles { + pub fn run(&self, config: &ClientConfig) -> Result<(), ObnamError> { + let temp = NamedTempFile::new()?; - let genlist = client.list_generations()?; - let gen_id: String = genlist.resolve(gen_ref)?; + let client = BackupClient::new(config)?; - let gen = client.fetch_generation(&gen_id, temp.path())?; - for file in gen.files()? { - println!("{}", format_entry(&file.entry(), file.reason())); - } + let genlist = client.list_generations()?; + let gen_id: String = genlist.resolve(&self.gen_id)?; - Ok(()) + let gen = client.fetch_generation(&gen_id, temp.path())?; + for file in gen.files()? { + println!("{}", format_entry(&file.entry(), file.reason())); + } + + Ok(()) + } } fn format_entry(e: &FilesystemEntry, reason: Reason) -> String { |