diff options
author | Eli W. Hunter <42009212+elihunter173@users.noreply.github.com> | 2020-07-23 23:54:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-23 23:54:12 -0400 |
commit | 6cd1d7f93bd6f150341582a1b54087cefffdbf87 (patch) | |
tree | 88c109ec79e679d5aa041b20f074cf7b57d97cda /examples/containercopyfrom.rs | |
parent | a4cd2185976ad56b880d5a10374c4dee6d116e6a (diff) |
Async/Await Support (continuation of #191) (#229)
* it builds!
* remove unused dependencies
* bump dependencies
* reimplement 'exec' endpoint
* update a few more examples
* update remaining examples
* fix doc tests, remove unused 'read' module
* remove feature-gated async closures
* split futures dependency to just 'futures-util'
* update version and readme
* make functions accepting Body generic over Into<Body> again
* update changelog
* reinstate 'unix-socket' feature
* reinstate 'attach' endpoint
* fix clippy lints
* fix documentation typo
* fix container copyfrom/into implementations
* add convenience methods for TtyChunk struct
* remove 'main' from code example to silence clippy lint
* Update hyper to 0.13.1
* Add Send bounds to TtyWriter
* Appease clippy
* Fix examples
* Update issue in changelog
Co-authored-by: Daniel Eades <danieleades@hotmail.com>
Co-authored-by: Marc Schreiber <marc.schreiber@aixigo.de>
Diffstat (limited to 'examples/containercopyfrom.rs')
-rw-r--r-- | examples/containercopyfrom.rs | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/examples/containercopyfrom.rs b/examples/containercopyfrom.rs index 2ebeccf..acbfa19 100644 --- a/examples/containercopyfrom.rs +++ b/examples/containercopyfrom.rs @@ -1,8 +1,10 @@ +use futures::TryStreamExt; use shiplift::Docker; use std::{env, path}; -use tokio::prelude::{Future, Stream}; +use tar::Archive; -fn main() { +#[tokio::main] +async fn main() -> Result<(), Box<dyn std::error::Error>> { let docker = Docker::new(); let id = env::args() .nth(1) @@ -10,17 +12,16 @@ fn main() { let path = env::args() .nth(2) .expect("Usage: cargo run --example containercopyfrom -- <container> <path in container>"); - let fut = docker + + let bytes = 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); + .try_concat() + .await?; + + let mut archive = Archive::new(&bytes[..]); + archive.unpack(env::current_dir()?)?; + + Ok(()) } |