summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2021-04-10 09:26:19 +0300
committerLars Wirzenius <liw@liw.fi>2021-04-10 10:29:27 +0300
commit2aa0eef599db13db6802a75a8b285d75d8035033 (patch)
tree9816a250a3dd8870e6ea8fe74658473f340ffa79
parent7a32584448ebe00bdb45aa5daf506ce37c4811e0 (diff)
downloadobnam2-2aa0eef599db13db6802a75a8b285d75d8035033.tar.gz
refactor: struct ListFiles subcommand
-rw-r--r--src/bin/obnam.rs10
-rw-r--r--src/cmd/list_files.rs29
-rw-r--r--src/cmd/mod.rs4
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;