add error NoGroupFilesInArguments
This commit is contained in:
@@ -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
@@ -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()
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
@@ -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> =
|
||||||
|
|||||||
@@ -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"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user