add error NoGroupFilesInArguments

This commit is contained in:
steven-omaha
2023-02-22 12:29:02 +01:00
parent 8815daafcb
commit a4c900c9a7
5 changed files with 15 additions and 7 deletions
-3
View File
@@ -1,9 +1,6 @@
# To Do # To Do
- make transition for existing user easier - make transition for existing user easier
- create an outer error type for main
- change version names (1.0.0-beta.10) - change version names (1.0.0-beta.10)
- tutorial - tutorial
- update completion for new subcommands (WIP) - update completion for new subcommands (WIP)
- outer error types:
- no group files provided (pacdef group new --edit)
+7 -1
View File
@@ -27,11 +27,17 @@ fn main() -> ExitCode {
/// Skip printing the error chain when searching packages yields no results, otherwise report error /// Skip printing the error chain when searching packages yields no results, otherwise report error
/// chain. /// chain.
#[allow(clippy::option_if_let_else)]
fn handle_final_result(result: Result<()>) -> ExitCode { fn handle_final_result(result: Result<()>) -> ExitCode {
match result { match result {
Ok(_) => ExitCode::SUCCESS, Ok(_) => ExitCode::SUCCESS,
Err(ref e) => { Err(ref e) => {
if e.root_cause().to_string() == pacdef_core::Error::NoPackagesFound.to_string() { if let Some(pacdef_err) = e.root_cause().downcast_ref::<pacdef_core::Error>() {
match pacdef_err {
pacdef_core::Error::NoPackagesFound => (),
pacdef_core::Error::NoGroupFilesInArguments => eprintln!("{pacdef_err}"),
_ => eprintln!("unexpected error"),
};
ExitCode::FAILURE ExitCode::FAILURE
} else { } else {
result.report() result.report()
+2 -1
View File
@@ -45,7 +45,8 @@ fn get_group_cmd() -> Command {
.short('e') .short('e')
.long("edit") .long("edit")
.help("edit the new group files after creation") .help("edit the new group files after creation")
.action(clap::ArgAction::SetTrue), .action(clap::ArgAction::SetTrue)
.num_args(0),
) )
.arg(Arg::new("groups").num_args(1..)) .arg(Arg::new("groups").num_args(1..))
.visible_alias("n"); .visible_alias("n");
+3 -2
View File
@@ -315,8 +315,9 @@ fn get_group_file_paths_matching_args<'a>(
groups: &'a HashSet<Group>, groups: &'a HashSet<Group>,
) -> Result<Vec<&'a Path>> { ) -> Result<Vec<&'a Path>> {
let file_names: Vec<_> = arg_match let file_names: Vec<_> = arg_match
.get_many::<String>("group") .get_many::<String>("groups")
.context("getting groups from args")? .context("getting groups from args")
.map_err(|_| crate::errors::Error::NoGroupFilesInArguments)?
.collect(); .collect();
let name_group_map: HashMap<&str, &Group> = let name_group_map: HashMap<&str, &Group> =
+3
View File
@@ -7,12 +7,15 @@ use std::fmt::Display;
pub enum Error { pub enum Error {
/// Package search yields no results. /// Package search yields no results.
NoPackagesFound, NoPackagesFound,
/// No group files were provided as arguments.
NoGroupFilesInArguments,
} }
impl Display for Error { impl Display for Error {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self { match self {
Self::NoPackagesFound => f.write_str("no packages matching query"), Self::NoPackagesFound => f.write_str("no packages matching query"),
Self::NoGroupFilesInArguments => f.write_str("no group files in arguments"),
} }
} }
} }