From 8c771c5f9b16be3bd5c7d2892905ab70e3191a9d Mon Sep 17 00:00:00 2001 From: Alex Butler Date: Fri, 28 Jun 2024 00:14:23 +0100 Subject: [PATCH] Don't panic on non-zero status exit --- CHANGELOG.md | 1 + src/command/print_completions.rs | 3 +-- src/main.rs | 19 +++++++++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cfa26f5..ab45583 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ * Support logging enabled when stderr is not a terminal or by setting env var `RUST_LOG`. E.g: - `RUST_LOG=ab_av1=info` "info" level logs various progress results like sample encode info - `RUST_LOG=ab_av1=debug` "debug" level logs include ffmpeg calls +* Don't panic on non-zero status exit. # v0.7.14 * Fix bash completions of some filenames. diff --git a/src/command/print_completions.rs b/src/command/print_completions.rs index adc5ba8..f1cf1da 100644 --- a/src/command/print_completions.rs +++ b/src/command/print_completions.rs @@ -10,12 +10,11 @@ pub struct Args { shell: Shell, } -pub fn print_completions(Args { shell }: Args) -> anyhow::Result<()> { +pub fn print_completions(Args { shell }: Args) { clap_complete::generate( shell, &mut crate::Command::command(), "ab-av1", &mut std::io::stdout(), ); - Ok(()) } diff --git a/src/main.rs b/src/main.rs index 97c32ab..b9aedfc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,6 +9,7 @@ mod sample; mod temporary; mod vmaf; +use ::log::{error, LevelFilter}; use anyhow::anyhow; use clap::Parser; use futures::FutureExt; @@ -30,11 +31,15 @@ enum Command { } #[tokio::main(flavor = "current_thread")] -async fn main() -> anyhow::Result<()> { - if !std::io::stderr().is_terminal() && env::var_os("RUST_LOG").is_none() { +async fn main() { + let stderr_term = std::io::stderr().is_terminal(); + if !stderr_term && env::var_os("RUST_LOG").is_none() { env::set_var("RUST_LOG", "ab_av1=info"); } - env_logger::init(); + env_logger::builder() + .filter_level(LevelFilter::Off) + .parse_default_env() + .init(); let action = Command::parse(); @@ -59,7 +64,13 @@ async fn main() -> anyhow::Result<()> { // Final cleanup. Samples are already deleted (if wished by the user) during `command::sample_encode::run`. temporary::clean(keep).await; - out + if let Err(err) = out { + error!("{err}"); + if stderr_term { + eprintln!("Error: {err}"); + } + std::process::exit(1); + } } impl Command {