skip error report when searching package yields no results

This commit is contained in:
Dr. Matthias Ratajczak
2023-02-13 17:22:02 +01:00
parent c09783f37f
commit cef1b6e655
3 changed files with 29 additions and 4 deletions
+1
View File
@@ -15,5 +15,6 @@ pub use crate::config::Config;
pub use crate::core::Pacdef;
pub use crate::grouping::Group;
pub(crate) use crate::grouping::Package;
pub use crate::search::NO_PACKAGES_FOUND;
extern crate pacdef_macro;
+25 -2
View File
@@ -1,11 +1,34 @@
use std::process::{ExitCode, Termination};
use anyhow::{Context, Result};
use pacdef::{args, Config, Group, Pacdef};
fn main() -> Result<()> {
fn main() -> ExitCode {
handle_final_result(main_inner())
}
/// Skip printing the error chain when searching packages yields no results, otherwise report error
/// chain.
fn handle_final_result(result: Result<()>) -> ExitCode {
match result {
Ok(_) => ExitCode::SUCCESS,
Err(ref e) => {
let msg = e.root_cause().to_string();
if msg == pacdef::NO_PACKAGES_FOUND {
ExitCode::FAILURE
} else {
result.report()
}
}
}
}
fn main_inner() -> Result<()> {
let args = args::get();
let config = Config::load().context("loading config file")?;
let groups = Group::load(&config).context("loading groups")?;
let groups = Group::load(&config).context("loading groups").unwrap();
let pacdef = Pacdef::new(args, config, groups);
pacdef.run_action_from_arg().context("running action")
}
+3 -2
View File
@@ -8,7 +8,8 @@ use regex::Regex;
use crate::grouping::{Group, Package, Section};
// TODO don't show an error message when search yields no results
pub const NO_PACKAGES_FOUND: &str = "no packages matching query";
pub(crate) fn search_packages(args: &ArgMatches, groups: &HashSet<Group>) -> Result<()> {
let search_string = args
.get_one::<String>("string")
@@ -29,7 +30,7 @@ pub(crate) fn search_packages(args: &ArgMatches, groups: &HashSet<Group>) -> Res
}
if vec.is_empty() {
bail!("no packages matching query")
bail!(NO_PACKAGES_FOUND)
}
print_triples(vec);