fix crash on missing selection in file mode

This commit is contained in:
Alexander Mohr 2025-05-04 00:09:39 +02:00
parent e8f90a3ba3
commit f55e04c219
2 changed files with 19 additions and 23 deletions

View file

@ -1,7 +1,7 @@
use std::fmt; use std::fmt;
/// Defines error the lib can encounter /// Defines error the lib can encounter
#[derive(Debug)] #[derive(Debug, PartialEq)]
pub enum Error { pub enum Error {
/// Failed to update a cache file with the given reason. /// Failed to update a cache file with the given reason.
UpdateCacheError(String), UpdateCacheError(String),

View file

@ -2,7 +2,7 @@ use std::env;
use anyhow::anyhow; use anyhow::anyhow;
use worf_lib::config::Mode; use worf_lib::config::Mode;
use worf_lib::{config, mode}; use worf_lib::{Error, config, mode};
fn main() -> anyhow::Result<()> { fn main() -> anyhow::Result<()> {
env_logger::Builder::new() env_logger::Builder::new()
.parse_filters(&env::var("RUST_LOG").unwrap_or_else(|_| "error".to_owned())) .parse_filters(&env::var("RUST_LOG").unwrap_or_else(|_| "error".to_owned()))
@ -13,30 +13,26 @@ fn main() -> anyhow::Result<()> {
let config = config::load_config(Some(&args)).unwrap_or(args); let config = config::load_config(Some(&args)).unwrap_or(args);
if let Some(show) = &config.show() { if let Some(show) = &config.show() {
match show { let result = match show {
Mode::Run => { Mode::Run => mode::run(&config),
mode::run(&config).map_err(|e| anyhow!(e))?; Mode::Drun => mode::d_run(&config),
} Mode::Dmenu => mode::dmenu(&config),
Mode::Drun => { Mode::File => mode::file(&config),
mode::d_run(&config).map_err(|e| anyhow!(e))?;
}
Mode::Dmenu => {
mode::dmenu(&config).map_err(|e| anyhow!(e))?;
}
Mode::File => {
mode::file(&config).map_err(|e| anyhow!(e))?;
}
Mode::Math => { Mode::Math => {
mode::math(&config); mode::math(&config);
Ok(())
} }
Mode::Ssh => { Mode::Ssh => mode::ssh(&config),
mode::ssh(&config).map_err(|e| anyhow!(e))?; Mode::Emoji => mode::emoji(&config),
} Mode::Auto => mode::auto(&config),
Mode::Emoji => { };
mode::emoji(&config).map_err(|e| anyhow!(e))?;
} if let Err(err) = result {
Mode::Auto => { if err == Error::NoSelection {
mode::auto(&config).map_err(|e| anyhow!(e))?; log::info!("no selection made");
} else {
log::error!("Error occurred {err:?}");
return Err(anyhow!("Error occurred {err:?}"));
} }
} }