diff options
Diffstat (limited to 'examples/containercopyfrom.rs')
-rw-r--r-- | examples/containercopyfrom.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/examples/containercopyfrom.rs b/examples/containercopyfrom.rs new file mode 100644 index 0000000..2ebeccf --- /dev/null +++ b/examples/containercopyfrom.rs @@ -0,0 +1,26 @@ +use shiplift::Docker; +use std::{env, path}; +use tokio::prelude::{Future, Stream}; + +fn main() { + let docker = Docker::new(); + let id = env::args() + .nth(1) + .expect("Usage: cargo run --example containercopyfrom -- <container> <path in container>"); + let path = env::args() + .nth(2) + .expect("Usage: cargo run --example containercopyfrom -- <container> <path in container>"); + let fut = docker + .containers() + .get(&id) + .copy_from(path::Path::new(&path)) + .collect() + .and_then(|stream| { + let tar = stream.concat(); + let mut archive = tar::Archive::new(tar.as_slice()); + archive.unpack(env::current_dir()?)?; + Ok(()) + }) + .map_err(|e| eprintln!("Error: {}", e)); + tokio::run(fut); +} |