fix 'group new' subcommand
This commit is contained in:
@@ -7,7 +7,11 @@ use crate::env::get_editor;
|
||||
|
||||
/// Run the editor and pass the provided files as arguments. The workdir is set
|
||||
/// to the parent of the first file.
|
||||
pub fn run_edit_command(files: &[&Path]) -> Result<ExitStatus> {
|
||||
pub fn run_edit_command<P>(files: &[P]) -> Result<ExitStatus>
|
||||
where
|
||||
P: AsRef<Path>,
|
||||
{
|
||||
fn inner(files: &[&Path]) -> Result<ExitStatus> {
|
||||
let mut cmd = Command::new(get_editor().context("getting suitable editor")?);
|
||||
cmd.current_dir(
|
||||
files[0]
|
||||
@@ -18,4 +22,8 @@ pub fn run_edit_command(files: &[&Path]) -> Result<ExitStatus> {
|
||||
cmd.arg(f.to_string_lossy().to_string());
|
||||
}
|
||||
cmd.status().map_err(|e| anyhow!(e))
|
||||
}
|
||||
|
||||
let files: Vec<_> = files.iter().map(|p| p.as_ref()).collect();
|
||||
inner(&files)
|
||||
}
|
||||
|
||||
@@ -280,8 +280,23 @@ impl Pacdef {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[allow(clippy::unused_self)]
|
||||
fn new_groups(&self, arg_matches: &ArgMatches) -> Result<()> {
|
||||
let paths = get_group_file_paths_matching_args(arg_matches, &self.groups)?;
|
||||
let group_path = get_group_dir()?;
|
||||
|
||||
let new_group_names: Vec<_> = arg_matches
|
||||
.get_many::<String>("groups")
|
||||
.context("getting groups from args")?
|
||||
.collect();
|
||||
|
||||
let paths: Vec<_> = new_group_names
|
||||
.into_iter()
|
||||
.map(|name| {
|
||||
let mut base = group_path.clone();
|
||||
base.push(name);
|
||||
base
|
||||
})
|
||||
.collect();
|
||||
|
||||
for file in &paths {
|
||||
ensure!(!file.exists(), "group already exists under {file:?}");
|
||||
@@ -323,7 +338,7 @@ fn get_group_file_paths_matching_args<'a>(
|
||||
groups: &'a HashSet<Group>,
|
||||
) -> Result<Vec<&'a Path>> {
|
||||
let file_names: Vec<_> = arg_match
|
||||
.get_many::<String>("group")
|
||||
.get_many::<String>("groups")
|
||||
.context("getting groups from args")?
|
||||
.collect();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user