From 2aa0eef599db13db6802a75a8b285d75d8035033 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 10 Apr 2021 09:26:19 +0300 Subject: refactor: struct ListFiles subcommand --- src/bin/obnam.rs | 10 ++++------ src/cmd/list_files.rs | 29 +++++++++++++++++++---------- src/cmd/mod.rs | 4 +--- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/src/bin/obnam.rs b/src/bin/obnam.rs index 72dc208..0552e3b 100644 --- a/src/bin/obnam.rs +++ b/src/bin/obnam.rs @@ -5,8 +5,9 @@ use log4rs::config::{Appender, Config, Logger, Root}; use obnam::cmd::backup::Backup; use obnam::cmd::init::Init; use obnam::cmd::list::List; +use obnam::cmd::list_files::ListFiles; use obnam::cmd::show_gen::ShowGeneration; -use obnam::cmd::{get_chunk, list_files, restore, show_config}; +use obnam::cmd::{get_chunk, restore, show_config}; use obnam::config::ClientConfig; use std::path::{Path, PathBuf}; use structopt::StructOpt; @@ -34,7 +35,7 @@ fn main() -> anyhow::Result<()> { Command::Backup(x) => x.run(&config), Command::List(x) => x.run(&config), Command::ShowGeneration(x) => x.run(&config), - Command::ListFiles { gen_id } => list_files(&config, &gen_id), + Command::ListFiles(x) => x.run(&config), Command::Restore { gen_id, to } => restore(&config, &gen_id, &to), Command::GetChunk { chunk_id } => get_chunk(&config, &chunk_id), Command::Config => show_config(&config), @@ -101,10 +102,7 @@ enum Command { Init(Init), Backup(Backup), List(List), - ListFiles { - #[structopt(default_value = "latest")] - gen_id: String, - }, + ListFiles(ListFiles), Restore { #[structopt()] gen_id: String, 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 { diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs index f96dc2a..a5f4884 100644 --- a/src/cmd/mod.rs +++ b/src/cmd/mod.rs @@ -1,11 +1,9 @@ pub mod backup; pub mod init; pub mod list; +pub mod list_files; pub mod show_gen; -mod list_files; -pub use list_files::list_files; - pub mod restore; pub use restore::restore; -- cgit v1.2.1