sakurs_cli/input/
glob_resolver.rs1use anyhow::{Context, Result};
4use glob::glob;
5use std::path::PathBuf;
6
7pub fn resolve_patterns(patterns: &[String]) -> Result<Vec<PathBuf>> {
9 let mut files = Vec::new();
10
11 for pattern in patterns {
12 let paths = glob(pattern).with_context(|| format!("Invalid glob pattern: {pattern}"))?;
13
14 for path_result in paths {
15 let path =
16 path_result.with_context(|| format!("Error resolving pattern: {pattern}"))?;
17
18 if path.is_file() {
19 files.push(path);
20 }
21 }
22 }
23
24 if files.is_empty() {
25 anyhow::bail!("No files found matching the provided patterns");
26 }
27
28 files.sort();
30 files.dedup();
31
32 Ok(files)
33}