skip error report when searching package yields no results
This commit is contained in:
@@ -15,5 +15,6 @@ pub use crate::config::Config;
|
|||||||
pub use crate::core::Pacdef;
|
pub use crate::core::Pacdef;
|
||||||
pub use crate::grouping::Group;
|
pub use crate::grouping::Group;
|
||||||
pub(crate) use crate::grouping::Package;
|
pub(crate) use crate::grouping::Package;
|
||||||
|
pub use crate::search::NO_PACKAGES_FOUND;
|
||||||
|
|
||||||
extern crate pacdef_macro;
|
extern crate pacdef_macro;
|
||||||
|
|||||||
+25
-2
@@ -1,11 +1,34 @@
|
|||||||
|
use std::process::{ExitCode, Termination};
|
||||||
|
|
||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
|
|
||||||
use pacdef::{args, Config, Group, Pacdef};
|
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 args = args::get();
|
||||||
let config = Config::load().context("loading config file")?;
|
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);
|
let pacdef = Pacdef::new(args, config, groups);
|
||||||
pacdef.run_action_from_arg().context("running action")
|
pacdef.run_action_from_arg().context("running action")
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-2
@@ -8,7 +8,8 @@ use regex::Regex;
|
|||||||
|
|
||||||
use crate::grouping::{Group, Package, Section};
|
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<()> {
|
pub(crate) fn search_packages(args: &ArgMatches, groups: &HashSet<Group>) -> Result<()> {
|
||||||
let search_string = args
|
let search_string = args
|
||||||
.get_one::<String>("string")
|
.get_one::<String>("string")
|
||||||
@@ -29,7 +30,7 @@ pub(crate) fn search_packages(args: &ArgMatches, groups: &HashSet<Group>) -> Res
|
|||||||
}
|
}
|
||||||
|
|
||||||
if vec.is_empty() {
|
if vec.is_empty() {
|
||||||
bail!("no packages matching query")
|
bail!(NO_PACKAGES_FOUND)
|
||||||
}
|
}
|
||||||
|
|
||||||
print_triples(vec);
|
print_triples(vec);
|
||||||
|
|||||||
Reference in New Issue
Block a user