summaryrefslogtreecommitdiff
path: root/src/cmd/get_chunk.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/get_chunk.rs')
-rw-r--r--src/cmd/get_chunk.rs27
1 files changed, 18 insertions, 9 deletions
diff --git a/src/cmd/get_chunk.rs b/src/cmd/get_chunk.rs
index 385c4d5..4ee70fe 100644
--- a/src/cmd/get_chunk.rs
+++ b/src/cmd/get_chunk.rs
@@ -1,16 +1,25 @@
use crate::chunkid::ChunkId;
use crate::client::BackupClient;
-use crate::client::ClientConfig;
+use crate::config::ClientConfig;
use crate::error::ObnamError;
use std::io::{stdout, Write};
+use structopt::StructOpt;
-pub fn get_chunk(config: &ClientConfig, chunk_id: &str) -> Result<(), ObnamError> {
- let client = BackupClient::new(config)?;
- let chunk_id: ChunkId = chunk_id.parse().unwrap();
- let chunk = client.fetch_chunk(&chunk_id)?;
+#[derive(Debug, StructOpt)]
+pub struct GetChunk {
+ #[structopt()]
+ chunk_id: String,
+}
+
+impl GetChunk {
+ pub fn run(&self, config: &ClientConfig) -> Result<(), ObnamError> {
+ let client = BackupClient::new(config)?;
+ let chunk_id: ChunkId = self.chunk_id.parse().unwrap();
+ let chunk = client.fetch_chunk(&chunk_id)?;
- let stdout = stdout();
- let mut handle = stdout.lock();
- handle.write_all(chunk.data())?;
- Ok(())
+ let stdout = stdout();
+ let mut handle = stdout.lock();
+ handle.write_all(chunk.data())?;
+ Ok(())
+ }
}