diff options
author | Lars Wirzenius <liw@liw.fi> | 2021-04-10 09:16:30 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2021-04-10 10:29:27 +0300 |
commit | 82eb02a0437ba8a7bf2025f5b61864b450ee68b2 (patch) | |
tree | b27bda1c18e18e47aca7cb457caa4ee311ea7461 /src/cmd | |
parent | 822a2f8c6c4d83d82d4543eb5fcf0ed01df21435 (diff) | |
download | obnam2-82eb02a0437ba8a7bf2025f5b61864b450ee68b2.tar.gz |
refactor: struct Backup subcommand
Diffstat (limited to 'src/cmd')
-rw-r--r-- | src/cmd/backup.rs | 32 | ||||
-rw-r--r-- | src/cmd/mod.rs | 4 |
2 files changed, 20 insertions, 16 deletions
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; |