diff options
-rw-r--r-- | examples/networkconnect.rs | 16 | ||||
-rw-r--r-- | examples/networkdelete.rs | 3 | ||||
-rw-r--r-- | examples/networkdisconnect.rs | 16 | ||||
-rw-r--r-- | src/builder.rs | 39 | ||||
-rw-r--r-- | src/errors.rs | 24 | ||||
-rw-r--r-- | src/lib.rs | 34 | ||||
-rw-r--r-- | src/rep.rs | 13 | ||||
-rw-r--r-- | src/transport.rs | 18 |
8 files changed, 81 insertions, 82 deletions
diff --git a/examples/networkconnect.rs b/examples/networkconnect.rs index 165510b..e203e18 100644 --- a/examples/networkconnect.rs +++ b/examples/networkconnect.rs @@ -6,11 +6,13 @@ use std::env; fn main() { let docker = Docker::new(); let networks = docker.networks(); - let container_id = env::args().nth(1).unwrap(); - let network_id = env::args().nth(2).unwrap(); - let info = networks - .get(&network_id) - .connect(&ContainerConnectionOptions::new(&container_id)) - .unwrap(); - println!("{:?}", info); + match (env::args().nth(1), env::args().nth(2)) { + (Some(container_id), Some(network_id)) => println!( + "{:?}", + networks + .get(&network_id) + .connect(&ContainerConnectionOptions::new(&container_id)) + ), + _ => eprintln!("please provide a container_id and network_id"), + } } diff --git a/examples/networkdelete.rs b/examples/networkdelete.rs index b824e38..1ce4c4d 100644 --- a/examples/networkdelete.rs +++ b/examples/networkdelete.rs @@ -6,7 +6,6 @@ use std::env; fn main() { let docker = Docker::new(); if let Some(id) = env::args().nth(1) { - let status = docker.networks().get(&id).delete().unwrap(); - println!("{:?}", status); + println!("{:?}", docker.networks().get(&id).delete()); } } diff --git a/examples/networkdisconnect.rs b/examples/networkdisconnect.rs index b3e0721..9676dc9 100644 --- a/examples/networkdisconnect.rs +++ b/examples/networkdisconnect.rs @@ -6,11 +6,13 @@ use std::env; fn main() { let docker = Docker::new(); let networks = docker.networks(); - let container_id = env::args().nth(1).unwrap(); - let network_id = env::args().nth(2).unwrap(); - let info = networks - .get(&network_id) - .disconnect(&ContainerConnectionOptions::new(&container_id)) - .unwrap(); - println!("{:?}", info); + match (env::args().nth(1), env::args().nth(2)) { + (Some(container_id), Some(network_id)) => println!( + "{:?}", + networks + .get(&network_id) + .disconnect(&ContainerConnectionOptions::new(&container_id)) + ), + _ => eprintln!("please provide a container_id and network_id"), + } } diff --git a/src/builder.rs b/src/builder.rs index 031090e..0d20da1 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -408,7 +408,7 @@ impl ContainerOptions { { for (k, v) in params.iter() { let key_string = k.to_string(); - insert(&mut key_string.split(".").peekable(), v, body) + insert(&mut key_string.split('.').peekable(), v, body) } } } @@ -430,9 +430,9 @@ impl ContainerOptionsBuilder { params.insert("Image", Value::String(image.to_owned())); ContainerOptionsBuilder { name: None, - params: params, - params_list: params_list, - params_hash: params_hash, + params, + params_list, + params_hash, } } @@ -451,7 +451,7 @@ impl ContainerOptionsBuilder { for v in volumes { self.params_list .entry("HostConfig.Binds") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(v.to_owned()); } self @@ -464,7 +464,7 @@ impl ContainerOptionsBuilder { for link in links { self.params_list .entry("HostConfig.Links") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(link.to_owned()); } self @@ -485,9 +485,7 @@ impl ContainerOptionsBuilder { ) -> &mut ContainerOptionsBuilder { let mut json_labels = Map::new(); for (k, v) in labels { - let key: &str = k.as_ref(); - let value: &str = v.as_ref(); - json_labels.insert(key.to_owned(), Value::String(value.to_string())); + json_labels.insert(k.to_string(), Value::String(v.to_string())); } self.params.insert("Labels", Value::Object(json_labels)); @@ -502,7 +500,7 @@ impl ContainerOptionsBuilder { for host in hosts { self.params_list .entry("HostConfig.ExtraHosts") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(host.to_owned()); } @@ -516,7 +514,7 @@ impl ContainerOptionsBuilder { for volume in volumes { self.params_list .entry("HostConfig.VolumesFrom") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(volume.to_owned()); } self @@ -540,7 +538,7 @@ impl ContainerOptionsBuilder { for env in envs { self.params_list .entry("Env") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(env.to_owned()); } self @@ -553,7 +551,7 @@ impl ContainerOptionsBuilder { for cmd in cmds { self.params_list .entry("Cmd") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(cmd.to_owned()); } self @@ -577,7 +575,7 @@ impl ContainerOptionsBuilder { for c in capabilities { self.params_list .entry("HostConfig.CapAdd") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(c.to_owned()); } self @@ -590,7 +588,7 @@ impl ContainerOptionsBuilder { for d in devices { self.params_hash .entry("HostConfig.Devices".to_string()) - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(d); } self @@ -679,7 +677,7 @@ impl ExecContainerOptionsBuilder { for cmd in cmds { self.params .entry("Cmd") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(cmd.to_owned()); } self @@ -693,7 +691,7 @@ impl ExecContainerOptionsBuilder { for env in envs { self.params .entry("Env") - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(env.to_owned()); } self @@ -750,6 +748,7 @@ impl EventsOptions { } } +#[derive(Copy, Clone)] pub enum EventFilterType { Container, Image, @@ -1188,8 +1187,8 @@ impl NetworkCreateOptionsBuilder { params.insert("Name", name.to_owned()); NetworkCreateOptionsBuilder { name: None, - params: params, - params_hash: params_hash, + params, + params_hash, } } @@ -1210,7 +1209,7 @@ impl NetworkCreateOptionsBuilder { for l in labels { self.params_hash .entry("Labels".to_string()) - .or_insert(Vec::new()) + .or_insert_with(Vec::new) .push(l) } self diff --git a/src/errors.rs b/src/errors.rs index b351309..5af8c44 100644 --- a/src/errors.rs +++ b/src/errors.rs @@ -3,7 +3,7 @@ use http; use hyper::{self, StatusCode}; use serde_json::Error as SerdeError; -use std::error::Error as ErrorTrait; +use std::error::Error as StdError; use std::fmt; use std::io::Error as IoError; @@ -47,25 +47,25 @@ impl fmt::Display for Error { ) -> fmt::Result { write!(f, "Docker Error: ")?; match self { - &Error::SerdeJsonError(ref err) => return err.fmt(f), - &Error::Http(ref err) => return err.fmt(f), - &Error::Hyper(ref err) => return err.fmt(f), - &Error::IO(ref err) => return err.fmt(f), - &Error::Fault { code, .. } => return write!(f, "{}", code), - }; + Error::SerdeJsonError(ref err) => err.fmt(f), + Error::Http(ref err) => err.fmt(f), + Error::Hyper(ref err) => err.fmt(f), + Error::IO(ref err) => err.fmt(f), + Error::Fault { code, .. } => write!(f, "{}", code), + } } } -impl ErrorTrait for Error { +impl StdError for Error { fn description(&self) -> &str { "Shiplift Error" } - fn cause(&self) -> Option<&ErrorTrait> { + fn cause(&self) -> Option<&StdError> { match self { - &Error::SerdeJsonError(ref err) => Some(err), - &Error::Http(ref err) => Some(err), - &Error::IO(ref err) => Some(err), + Error::SerdeJsonError(ref err) => Some(err), + Error::Http(ref err) => Some(err), + Error::IO(ref err) => Some(err), _ => None, } } @@ -95,7 +95,7 @@ impl<'a, 'b> Image<'a, 'b> { S: Into<Cow<'b, str>>, { Image { - docker: docker, + docker, name: name.into(), } } @@ -130,13 +130,15 @@ impl<'a, 'b> Image<'a, 'b> { .to_owned(), ) }) - .or(obj.get("Deleted").map(|sha| { - Status::Deleted( - sha.as_str() - .expect("expected Deleted to be a string") - .to_owned(), - ) - })) + .or_else(|| { + obj.get("Deleted").map(|sha| { + Status::Deleted( + sha.as_str() + .expect("expected Deleted to be a string") + .to_owned(), + ) + }) + }) .expect("expected Untagged or Deleted") }), _ => unreachable!(), @@ -159,7 +161,7 @@ pub struct Images<'a> { impl<'a> Images<'a> { /// Exports an interface for interacting with docker images pub fn new(docker: &'a Docker) -> Images<'a> { - Images { docker: docker } + Images { docker } } /// Builds a new image build by reading a Dockerfile in a target directory @@ -263,7 +265,7 @@ impl<'a, 'b> Container<'a, 'b> { S: Into<Cow<'b, str>>, { Container { - docker: docker, + docker, id: id.into(), } } @@ -473,7 +475,7 @@ impl<'a, 'b> Container<'a, 'b> { .unwrap() )[..], Some((bytes, mime::APPLICATION_JSON)), - ).map(|stream| Tty::new(stream)) + ).map(Tty::new) } else { // TODO panic!() @@ -493,7 +495,7 @@ pub struct Containers<'a> { impl<'a> Containers<'a> { /// Exports an interface for interacting with docker containers pub fn new(docker: &'a Docker) -> Containers<'a> { - Containers { docker: docker } + Containers { docker } } /// Lists the container instances on the docker host @@ -549,7 +551,7 @@ pub struct Networks<'a> { impl<'a> Networks<'a> { /// Exports an interface for interacting with docker Networks pub fn new(docker: &'a Docker) -> Networks<'a> { - Networks { docker: docker } + Networks { docker } } /// List the docker networks on the current docker host @@ -604,7 +606,7 @@ impl<'a, 'b> Network<'a, 'b> { S: Into<Cow<'b, str>>, { Network { - docker: docker, + docker, id: id.into(), } } @@ -716,7 +718,7 @@ impl Docker { Some("unix") => panic!("Unix socket support is disabled"), _ => { - if let Some(ref certs) = env::var("DOCKER_CERT_PATH").ok() { + if let Ok(ref certs) = env::var("DOCKER_CERT_PATH") { // fixme: don't unwrap before you know what's in the box // https://github.com/hyperium/hyper/blob/master/src/net.rs#L427-L428 let mut connector = SslConnector::builder(SslMethod::tls()).unwrap(); @@ -729,7 +731,7 @@ impl Docker { connector .set_private_key_file(&Path::new(key), SslFiletype::PEM) .unwrap(); - if let Some(_) = env::var("DOCKER_TLS_VERIFY").ok() { + if env::var("DOCKER_TLS_VERIFY").is_ok() { let ca = &format!("{}/ca.pem", certs); connector.set_ca_file(&Path::new(ca)).unwrap(); } @@ -188,15 +188,12 @@ pub struct Config { impl Config { pub fn env(&self) -> HashMap<String, String> { let mut map = HashMap::new(); - match self.env { - Some(ref vars) => { - for e in vars { - let pair: Vec<&str> = e.split("=").collect(); - map.insert(pair[0].to_owned(), pair[1].to_owned()); - } + if let Some(ref vars) = self.env { + for e in vars { + let pair: Vec<&str> = e.split('=').collect(); + map.insert(pair[0].to_owned(), pair[1].to_owned()); } - _ => (), - }; + } map } } diff --git a/src/transport.rs b/src/transport.rs index d8c1ea1..9df6d4a 100644 --- a/src/transport.rs +++ b/src/transport.rs @@ -141,37 +141,37 @@ impl Transport { code: res.status(), message: self .get_error_message(res) - .unwrap_or("bad parameter".to_owned()), + .unwrap_or_else(|| "bad parameter".to_owned()), }), StatusCode::NOT_FOUND => Err(Error::Fault { code: res.status(), message: self .get_error_message(res) - .unwrap_or("not found".to_owned()), + .unwrap_or_else(|| "not found".to_owned()), }), StatusCode::NOT_MODIFIED => Err(Error::Fault { code: res.status(), message: self .get_error_message(res) - .unwrap_or("not modified".to_owned()), + .unwrap_or_else(|| "not modified".to_owned()), }), StatusCode::NOT_ACCEPTABLE => Err(Error::Fault { code: res.status(), message: self .get_error_message(res) - .unwrap_or("not acceptable".to_owned()), + .unwrap_or_else(|| "not acceptable".to_owned()), }), StatusCode::CONFLICT => Err(Error::Fault { code: res.status(), message: self .get_error_message(res) - .unwrap_or("conflict found".to_owned()), + .unwrap_or_else(|| "conflict found".to_owned()), }), StatusCode::INTERNAL_SERVER_ERROR => Err(Error::Fault { code: res.status(), message: self .get_error_message(res) - .unwrap_or("internal server error".to_owned()), + .unwrap_or_else(|| "internal server error".to_owned()), }), _ => unreachable!(), } @@ -214,14 +214,12 @@ impl Transport { match String::from_utf8(chunk.into_iter().collect()) { Ok(output) => { let json_response = serde_json::from_str::<Value>(output.as_str()).ok(); - let message = json_response + json_response .as_ref() .and_then(|x| x.as_object()) .and_then(|x| x.get("message")) .and_then(|x| x.as_str()) - .map(|x| x.to_owned()); - - message + .map(|x| x.to_owned()) } Err(..) => None, } |