diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/containerlogs.rs (renamed from examples/logs.rs) | 0 | ||||
-rw-r--r-- | examples/execinspect.rs | 32 | ||||
-rw-r--r-- | examples/execresize.rs | 30 | ||||
-rw-r--r-- | examples/export.rs | 4 | ||||
-rw-r--r-- | examples/imagebuild.rs | 5 | ||||
-rw-r--r-- | examples/networkdisconnect.rs | 5 | ||||
-rw-r--r-- | examples/servicedelete.rs | 14 | ||||
-rw-r--r-- | examples/serviceinspect.rs | 15 | ||||
-rw-r--r-- | examples/servicelogs.rs | 31 | ||||
-rw-r--r-- | examples/services.rs | 19 | ||||
-rw-r--r-- | examples/volumecreate.rs | 6 | ||||
-rw-r--r-- | examples/volumedelete.rs | 3 | ||||
-rw-r--r-- | examples/volumes.rs | 4 |
13 files changed, 150 insertions, 18 deletions
diff --git a/examples/logs.rs b/examples/containerlogs.rs index 73c8045..73c8045 100644 --- a/examples/logs.rs +++ b/examples/containerlogs.rs diff --git a/examples/execinspect.rs b/examples/execinspect.rs new file mode 100644 index 0000000..de92ec7 --- /dev/null +++ b/examples/execinspect.rs @@ -0,0 +1,32 @@ +use futures::StreamExt; +use shiplift::{Docker, Exec, ExecContainerOptions}; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let mut args = env::args().skip(1); + + // First argument is container id + let id = args.next().expect("You need to specify a container id"); + // Rest is command to run in the container + let cmd = args.collect::<Vec<String>>(); + println!("{} {:?}", id, cmd); + + // Create options with specified command + let opts = ExecContainerOptions::builder() + .cmd(cmd.iter().map(String::as_str).collect()) + .attach_stdout(true) + .attach_stderr(true) + .build(); + + let exec = Exec::create(&docker, &id, &opts).await.unwrap(); + + println!("{:#?}", exec.inspect().await.unwrap()); + + let mut stream = exec.start(); + + stream.next().await; + + println!("{:#?}", exec.inspect().await.unwrap()); +} diff --git a/examples/execresize.rs b/examples/execresize.rs new file mode 100644 index 0000000..7c9cf11 --- /dev/null +++ b/examples/execresize.rs @@ -0,0 +1,30 @@ +use shiplift::{Docker, Exec, ExecContainerOptions, ExecResizeOptions}; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let mut args = env::args().skip(1); + + // First argument is container id + let id = args.next().expect("You need to specify a container id"); + // Second is width + let width: u64 = args.next().map_or(Ok(0), |s| s.parse::<u64>()).unwrap(); + // Third is height + let height: u64 = args.next().map_or(Ok(0), |s| s.parse::<u64>()).unwrap(); + + // Create an exec instance + let exec_opts = ExecContainerOptions::builder() + .cmd(vec!["echo", "123"]) + .attach_stdout(true) + .attach_stderr(true) + .build(); + let exec = Exec::create(&docker, &id, &exec_opts).await.unwrap(); + + // Resize its window with given parameters + let resize_opts = ExecResizeOptions::builder() + .width(width) + .height(height) + .build(); + exec.resize(&resize_opts).await.unwrap(); +} diff --git a/examples/export.rs b/examples/export.rs index 34f460d..22c543e 100644 --- a/examples/export.rs +++ b/examples/export.rs @@ -14,9 +14,7 @@ async fn main() { .open(format!("{}.tar", &id)) .unwrap(); - let images = docker.images(); - - while let Some(export_result) = images.get(&id).export().next().await { + while let Some(export_result) = docker.images().get(&id).export().next().await { match export_result.and_then(|bytes| export_file.write(&bytes).map_err(Error::from)) { Ok(n) => println!("copied {} bytes", n), Err(e) => eprintln!("Error: {}", e), diff --git a/examples/imagebuild.rs b/examples/imagebuild.rs index 80d825c..01647d4 100644 --- a/examples/imagebuild.rs +++ b/examples/imagebuild.rs @@ -9,10 +9,7 @@ async fn main() { let options = BuildOptions::builder(path).tag("shiplift_test").build(); - let images = docker.images(); - - let mut stream = images.build(&options); - + let mut stream = docker.images().build(&options); while let Some(build_result) = stream.next().await { match build_result { Ok(output) => println!("{:?}", output), diff --git a/examples/networkdisconnect.rs b/examples/networkdisconnect.rs index 8d58b35..78f33c6 100644 --- a/examples/networkdisconnect.rs +++ b/examples/networkdisconnect.rs @@ -6,9 +6,8 @@ async fn network_disconnect( network_id: &str, ) { let docker = Docker::new(); - let networks = docker.networks(); - - if let Err(e) = networks + if let Err(e) = docker + .networks() .get(network_id) .disconnect(&ContainerConnectionOptions::builder(container_id).build()) .await diff --git a/examples/servicedelete.rs b/examples/servicedelete.rs new file mode 100644 index 0000000..e962276 --- /dev/null +++ b/examples/servicedelete.rs @@ -0,0 +1,14 @@ +use shiplift::Docker; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let id = env::args() + .nth(1) + .expect("You need to specify an service name"); + + if let Err(e) = docker.services().get(&id).delete().await { + eprintln!("Error: {}", e) + } +} diff --git a/examples/serviceinspect.rs b/examples/serviceinspect.rs new file mode 100644 index 0000000..c281632 --- /dev/null +++ b/examples/serviceinspect.rs @@ -0,0 +1,15 @@ +use shiplift::Docker; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let id = env::args() + .nth(1) + .expect("Usage: cargo run --example serviceinspect -- <service>"); + + match docker.services().get(&id).inspect().await { + Ok(service) => println!("{:#?}", service), + Err(e) => eprintln!("Error: {}", e), + } +} diff --git a/examples/servicelogs.rs b/examples/servicelogs.rs new file mode 100644 index 0000000..e5f97c0 --- /dev/null +++ b/examples/servicelogs.rs @@ -0,0 +1,31 @@ +use futures::StreamExt; +use shiplift::{tty::TtyChunk, Docker, LogsOptions}; +use std::env; + +#[tokio::main] +async fn main() { + let docker = Docker::new(); + let id = env::args() + .nth(1) + .expect("You need to specify a service name"); + + let mut logs_stream = docker + .services() + .get(&id) + .logs(&LogsOptions::builder().stdout(true).stderr(true).build()); + + while let Some(log_result) = logs_stream.next().await { + match log_result { + Ok(chunk) => print_chunk(chunk), + Err(e) => eprintln!("Error: {}", e), + } + } +} + +fn print_chunk(chunk: TtyChunk) { + match chunk { + TtyChunk::StdOut(bytes) => println!("Stdout: {}", std::str::from_utf8(&bytes).unwrap()), + TtyChunk::StdErr(bytes) => eprintln!("Stdout: {}", std::str::from_utf8(&bytes).unwrap()), + TtyChunk::StdIn(_) => unreachable!(), + } +} diff --git a/examples/services.rs b/examples/services.rs new file mode 100644 index 0000000..713c5f8 --- /dev/null +++ b/examples/services.rs @@ -0,0 +1,19 @@ +use shiplift::{Docker, ServiceListOptions}; + +#[tokio::main] +async fn main() { + env_logger::init(); + let docker = Docker::new(); + match docker + .services() + .list(&ServiceListOptions::builder().enable_status().build()) + .await + { + Ok(services) => { + for s in services { + println!("service -> {:#?}", s) + } + } + Err(e) => eprintln!("Error: {}", e), + } +} diff --git a/examples/volumecreate.rs b/examples/volumecreate.rs index a243be6..a95bb12 100644 --- a/examples/volumecreate.rs +++ b/examples/volumecreate.rs @@ -1,10 +1,9 @@ -use shiplift::{builder::VolumeCreateOptions, Docker}; +use shiplift::{Docker, VolumeCreateOptions}; use std::{collections::HashMap, env}; #[tokio::main] async fn main() { let docker = Docker::new(); - let volumes = docker.volumes(); let volume_name = env::args() .nth(1) @@ -13,7 +12,8 @@ async fn main() { let mut labels = HashMap::new(); labels.insert("com.github.softprops", "shiplift"); - match volumes + match docker + .volumes() .create( &VolumeCreateOptions::builder() .name(volume_name.as_ref()) diff --git a/examples/volumedelete.rs b/examples/volumedelete.rs index ec1da7e..46b37f6 100644 --- a/examples/volumedelete.rs +++ b/examples/volumedelete.rs @@ -4,13 +4,12 @@ use std::env; #[tokio::main] async fn main() { let docker = Docker::new(); - let volumes = docker.volumes(); let volume_name = env::args() .nth(1) .expect("You need to specify an volume name"); - if let Err(e) = volumes.get(&volume_name).delete().await { + if let Err(e) = docker.volumes().get(&volume_name).delete().await { eprintln!("Error: {}", e) } } diff --git a/examples/volumes.rs b/examples/volumes.rs index d45c00a..0bb82aa 100644 --- a/examples/volumes.rs +++ b/examples/volumes.rs @@ -3,9 +3,7 @@ use shiplift::Docker; #[tokio::main] async fn main() { let docker = Docker::new(); - let volumes = docker.volumes(); - - match volumes.list().await { + match docker.volumes().list().await { Ok(volumes) => { for v in volumes { println!("volume -> {:#?}", v) |