From cff7dddf4e5f0dd0ab2f1d05fdde616437110743 Mon Sep 17 00:00:00 2001 From: Joakim Hulthe Date: Wed, 31 Jan 2024 17:06:39 +0100 Subject: [PATCH] Use eyre --- Cargo.lock | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 2 ++ src/main.rs | 12 ++++++----- 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4fbcd34..a0abf77 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -336,6 +336,33 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +[[package]] +name = "color-eyre" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204" +dependencies = [ + "backtrace", + "color-spantrace", + "eyre", + "indenter", + "once_cell", + "owo-colors", + "tracing-error", +] + +[[package]] +name = "color-spantrace" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" +dependencies = [ + "once_cell", + "owo-colors", + "tracing-core", + "tracing-error", +] + [[package]] name = "colorchoice" version = "1.0.0" @@ -548,6 +575,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "eyre" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6267a1fa6f59179ea4afc8e50fd8612a3cc60bc858f786ff877a4a8cb042799" +dependencies = [ + "indenter", + "once_cell", +] + [[package]] name = "failure" version = "0.1.8" @@ -849,8 +886,10 @@ version = "0.1.0" dependencies = [ "chrono", "clap", + "color-eyre", "dotenv", "duplicate", + "eyre", "futures", "handlebars 3.5.5", "http", @@ -1001,6 +1040,12 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + [[package]] name = "indexmap" version = "2.2.1" @@ -1303,6 +1348,12 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "owo-colors" +version = "3.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" + [[package]] name = "parking_lot" version = "0.11.2" @@ -2340,6 +2391,16 @@ dependencies = [ "valuable", ] +[[package]] +name = "tracing-error" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e" +dependencies = [ + "tracing", + "tracing-subscriber", +] + [[package]] name = "tracing-log" version = "0.2.0" diff --git a/Cargo.toml b/Cargo.toml index 13b5acc..f766804 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,3 +24,5 @@ rocket_dyn_templates = { version = "0.1.0", features = ["handlebars"] } tokio = { version = "1", features = ["fs"] } reqwest = { version = "0.11", default-features = false, features = ["rustls-tls"] } clap = { version = "4.4.18", features = ["derive", "env"] } +eyre = "0.6.11" +color-eyre = "0.6.2" diff --git a/src/main.rs b/src/main.rs index 0490556..74982c0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,10 +3,10 @@ mod routes; use clap::Parser; use dotenv::dotenv; +use eyre::Context; use health::HealthState; use rocket::fs::FileServer; use rocket_dyn_templates::Template; -use std::io; use std::path::PathBuf; use std::sync::Arc; use std::time::Duration; @@ -20,14 +20,16 @@ struct Opt { } #[rocket::main] -async fn main() -> io::Result<()> { +async fn main() -> eyre::Result<()> { dotenv().ok(); let opt = Opt::parse(); + color_eyre::install()?; let config = fs::read_to_string(&opt.config) .await - .expect("failed to read config file"); - let config = ron::from_str(&config).expect("failed to parse config file"); + .wrap_err_with(|| format!("failed to read config file: {:?}", opt.config))?; + let config = ron::from_str(&config) + .wrap_err_with(|| format!("failed to parse config file: {:?}", opt.config))?; let state = Arc::new(HealthState::new(config)); let rocket = rocket::build() @@ -38,7 +40,7 @@ async fn main() -> io::Result<()> { start_poller(state); - rocket.launch().await.expect("rocket failed to launch"); + rocket.launch().await.wrap_err("rocket failed to launch")?; Ok(()) }