diff --git a/src/cli_util.rs b/src/cli_util.rs index fb4bb71b7..85c482e75 100644 --- a/src/cli_util.rs +++ b/src/cli_util.rs @@ -507,25 +507,15 @@ impl WorkspaceCommandHelper { RepoPath::parse_fs_path(&self.cwd, self.workspace_root(), input) } - pub fn repo_paths_from_values(&self, values: &[String]) -> Result, CommandError> { - if !values.is_empty() { - // TODO: Add support for globs and other formats - let mut paths = vec![]; - for value in values { - let repo_path = self.parse_file_path(value)?; - paths.push(repo_path); - } - Ok(paths) - } else { - Ok(vec![]) - } - } - pub fn matcher_from_values(&self, values: &[String]) -> Result, CommandError> { - let paths = self.repo_paths_from_values(values)?; - if paths.is_empty() { + if values.is_empty() { Ok(Box::new(EverythingMatcher)) } else { + // TODO: Add support for globs and other formats + let paths = values + .iter() + .map(|v| self.parse_file_path(v)) + .collect::, _>>()?; Ok(Box::new(PrefixMatcher::new(&paths))) } } diff --git a/src/commands.rs b/src/commands.rs index d1a5ce17c..b9ec87704 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -3890,8 +3890,16 @@ fn cmd_sparse(ui: &mut Ui, command: &CommandHelper, args: &SparseArgs) -> Result } } else { let mut workspace_command = command.workspace_helper(ui)?; - let paths_to_add = workspace_command.repo_paths_from_values(&args.add)?; - let paths_to_remove = workspace_command.repo_paths_from_values(&args.remove)?; + let paths_to_add = args + .add + .iter() + .map(|v| workspace_command.parse_file_path(v)) + .collect::, _>>()?; + let paths_to_remove = args + .remove + .iter() + .map(|v| workspace_command.parse_file_path(v)) + .collect::, _>>()?; let (mut locked_wc, _wc_commit) = workspace_command.start_working_copy_mutation()?; let mut new_patterns = HashSet::new(); if args.reset {