diff --git a/cmd/soroban-cli/src/commands/network/shared.rs b/cmd/soroban-cli/src/commands/network/shared.rs index 5643214056..f219b41c21 100644 --- a/cmd/soroban-cli/src/commands/network/shared.rs +++ b/cmd/soroban-cli/src/commands/network/shared.rs @@ -31,11 +31,13 @@ impl fmt::Display for Network { } } -pub fn connect_to_docker(docker_socket_path: &Option) -> Docker { +pub fn connect_to_docker( + docker_socket_path: &Option, +) -> Result { if docker_socket_path.is_some() { let socket = docker_socket_path.as_ref().unwrap(); - Docker::connect_with_socket(socket, DEFAULT_TIMEOUT, API_DEFAULT_VERSION).unwrap() + Docker::connect_with_socket(socket, DEFAULT_TIMEOUT, API_DEFAULT_VERSION) } else { - Docker::connect_with_socket_defaults().unwrap() + Docker::connect_with_socket_defaults() } } diff --git a/cmd/soroban-cli/src/commands/network/start.rs b/cmd/soroban-cli/src/commands/network/start.rs index 2816f49c0f..b286c8ff5e 100644 --- a/cmd/soroban-cli/src/commands/network/start.rs +++ b/cmd/soroban-cli/src/commands/network/start.rs @@ -13,7 +13,10 @@ const DEFAULT_PORT_MAPPING: &str = "8000:8000"; const DOCKER_IMAGE: &str = "docker.io/stellar/quickstart"; #[derive(thiserror::Error, Debug)] -pub enum Error {} +pub enum Error { + #[error("Failed to start container: {0}")] + StartContainerError(#[from] bollard::errors::Error), +} #[derive(Debug, clap::Parser, Clone)] pub struct Cmd { @@ -48,13 +51,12 @@ pub struct Cmd { impl Cmd { pub async fn run(&self) -> Result<(), Error> { println!("Starting {} network", &self.network); - run_docker_command(self).await; - Ok(()) + run_docker_command(self).await } } -async fn run_docker_command(cmd: &Cmd) { - let docker = connect_to_docker(&cmd.docker_socket_path); +async fn run_docker_command(cmd: &Cmd) -> Result<(), Error> { + let docker = connect_to_docker(&cmd.docker_socket_path)?; let image = get_image_name(cmd); let create_image_options = Some(CreateImageOptions { @@ -65,8 +67,7 @@ async fn run_docker_command(cmd: &Cmd) { docker .create_image(create_image_options, None, None) .try_collect::>() - .await - .unwrap(); + .await?; let container_args = get_container_args(cmd); let port_mapping = get_port_mapping(cmd); @@ -91,9 +92,10 @@ async fn run_docker_command(cmd: &Cmd) { }); let response = docker.create_container(options, config).await.unwrap(); - let _container = docker + docker .start_container(&response.id, None::>) - .await; + .await + .map_err(Error::StartContainerError) } fn get_container_args(cmd: &Cmd) -> Vec { diff --git a/cmd/soroban-cli/src/commands/network/stop.rs b/cmd/soroban-cli/src/commands/network/stop.rs index 095e5f8c06..934b072c2e 100644 --- a/cmd/soroban-cli/src/commands/network/stop.rs +++ b/cmd/soroban-cli/src/commands/network/stop.rs @@ -20,7 +20,7 @@ pub struct Cmd { impl Cmd { pub async fn run(&self) -> Result<(), Error> { let container_name = format!("stellar-{}", self.network); - let docker = connect_to_docker(&self.docker_socket_path); + let docker = connect_to_docker(&self.docker_socket_path)?; println!("Stopping container: {container_name}"); docker.stop_container(&container_name, None).await.unwrap();