|
1 | 1 | use { |
2 | | - anyhow::Result, |
| 2 | + anyhow::{Context, Result}, |
3 | 3 | clap::{CommandFactory, Parser}, |
4 | 4 | futures::future::join_all, |
5 | 5 | lazy_static::lazy_static, |
@@ -53,9 +53,13 @@ async fn init() -> Result<()> { |
53 | 53 | // Listen for Ctrl+C so we can set the exit flag and wait for a graceful shutdown. |
54 | 54 | spawn(async move { |
55 | 55 | tracing::info!("Registered shutdown signal handler..."); |
56 | | - tokio::signal::ctrl_c().await.unwrap(); |
57 | | - tracing::info!("Shut down signal received, waiting for tasks..."); |
58 | | - let _ = EXIT.send(true); |
| 56 | + match tokio::signal::ctrl_c().await { |
| 57 | + Ok(()) => { |
| 58 | + tracing::info!("Shut down signal received, waiting for tasks..."); |
| 59 | + let _ = EXIT.send(true); |
| 60 | + } |
| 61 | + Err(err) => tracing::warn!("failed to register shutdown signal handler: {err}"), |
| 62 | + } |
59 | 63 | }); |
60 | 64 |
|
61 | 65 | // Spawn all worker tasks, and wait for all to complete (which will happen if a shutdown |
@@ -83,8 +87,8 @@ async fn init() -> Result<()> { |
83 | 87 | let defaults = arg |
84 | 88 | .get_default_values() |
85 | 89 | .iter() |
86 | | - .map(|v| v.to_str().unwrap()) |
87 | | - .collect::<Vec<_>>() |
| 90 | + .map(|v| v.to_str().context("non-utf8 default arg value")) |
| 91 | + .collect::<Result<Vec<_>>>()? |
88 | 92 | .join(","); |
89 | 93 |
|
90 | 94 | println!( |
|
0 commit comments