Skip to content

Commit

Permalink
Refine error handling
Browse files Browse the repository at this point in the history
  • Loading branch information
elizabethengelman committed Feb 9, 2024
1 parent af28742 commit c18ea3f
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
8 changes: 5 additions & 3 deletions cmd/soroban-cli/src/commands/network/shared.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,13 @@ impl fmt::Display for Network {
}
}

pub fn connect_to_docker(docker_socket_path: &Option<String>) -> Docker {
pub fn connect_to_docker(
docker_socket_path: &Option<String>,
) -> Result<Docker, bollard::errors::Error> {
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()
}
}
20 changes: 11 additions & 9 deletions cmd/soroban-cli/src/commands/network/start.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -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 {
Expand All @@ -65,8 +67,7 @@ async fn run_docker_command(cmd: &Cmd) {
docker
.create_image(create_image_options, None, None)
.try_collect::<Vec<_>>()
.await
.unwrap();
.await?;

let container_args = get_container_args(cmd);
let port_mapping = get_port_mapping(cmd);
Expand All @@ -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::<StartContainerOptions<String>>)
.await;
.await
.map_err(Error::StartContainerError)
}

fn get_container_args(cmd: &Cmd) -> Vec<String> {
Expand Down
2 changes: 1 addition & 1 deletion cmd/soroban-cli/src/commands/network/stop.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();

Expand Down

0 comments on commit c18ea3f

Please sign in to comment.