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;
/// Defines error the lib can encounter
#[derive(Debug)]
#[derive(Debug, PartialEq)]
pub enum Error {
/// Failed to update a cache file with the given reason.
UpdateCacheError(String),

View file

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