From 82eb02a0437ba8a7bf2025f5b61864b450ee68b2 Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 10 Apr 2021 09:16:30 +0300 Subject: refactor: struct Backup subcommand --- src/bin/obnam.rs | 7 ++++--- src/cmd/backup.rs | 32 +++++++++++++++++++------------- 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 4caa548..f639153 100644 --- a/src/bin/obnam.rs +++ b/src/bin/obnam.rs @@ -2,8 +2,9 @@ use directories_next::ProjectDirs; use log::{debug, error, info, LevelFilter}; use log4rs::append::file::FileAppender; use log4rs::config::{Appender, Config, Logger, Root}; +use obnam::cmd::backup::Backup; use obnam::cmd::init::Init; -use obnam::cmd::{backup, get_chunk, list, list_files, restore, show_config, show_generation}; +use obnam::cmd::{get_chunk, list, list_files, restore, show_config, show_generation}; use obnam::config::ClientConfig; use std::path::{Path, PathBuf}; use structopt::StructOpt; @@ -28,7 +29,7 @@ fn main() -> anyhow::Result<()> { let config = load_config_with_passwords(&opt)?; match opt.cmd { Command::Init(_) => panic!("this cannot happen"), - Command::Backup => backup(&config), + Command::Backup(x) => x.run(&config), Command::List => list(&config), Command::ShowGeneration { gen_id } => show_generation(&config, &gen_id), Command::ListFiles { gen_id } => list_files(&config, &gen_id), @@ -96,7 +97,7 @@ struct Opt { #[derive(Debug, StructOpt)] enum Command { Init(Init), - Backup, + Backup(Backup), List, ListFiles { #[structopt(default_value = "latest")] diff --git a/src/cmd/backup.rs b/src/cmd/backup.rs index 1091241..a0e0599 100644 --- a/src/cmd/backup.rs +++ b/src/cmd/backup.rs @@ -10,27 +10,33 @@ use bytesize::MIB; use log::info; use std::path::Path; use std::time::SystemTime; +use structopt::StructOpt; use tempfile::NamedTempFile; const SQLITE_CHUNK_SIZE: usize = MIB as usize; -pub fn backup(config: &ClientConfig) -> Result<(), ObnamError> { - let runtime = SystemTime::now(); +#[derive(Debug, StructOpt)] +pub struct Backup {} - let client = BackupClient::new(config)?; - let genlist = client.list_generations()?; - let (gen_id, file_count, warnings) = match genlist.resolve("latest") { - Err(_) => initial_backup(&config, &client)?, - Ok(old_ref) => incremental_backup(&old_ref, &config, &client)?, - }; +impl Backup { + pub fn run(&self, config: &ClientConfig) -> Result<(), ObnamError> { + let runtime = SystemTime::now(); - for w in warnings.iter() { - println!("warning: {}", w); - } + let client = BackupClient::new(config)?; + let genlist = client.list_generations()?; + let (gen_id, file_count, warnings) = match genlist.resolve("latest") { + Err(_) => initial_backup(&config, &client)?, + Ok(old_ref) => incremental_backup(&old_ref, &config, &client)?, + }; + + for w in warnings.iter() { + println!("warning: {}", w); + } - report_stats(&runtime, file_count, &gen_id, warnings.len())?; + report_stats(&runtime, file_count, &gen_id, warnings.len())?; - Ok(()) + Ok(()) + } } fn report_stats( diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs index e252bc9..fd5f8e9 100644 --- a/src/cmd/mod.rs +++ b/src/cmd/mod.rs @@ -1,8 +1,6 @@ +pub mod backup; pub mod init; -mod backup; -pub use backup::backup; - mod list; pub use list::list; -- cgit v1.2.1