Skip to content

Commit a831709

Browse files
committed
Fix glob behaviour with uses
1 parent 0c154b6 commit a831709

File tree

1 file changed

+21
-12
lines changed

1 file changed

+21
-12
lines changed

src/lock.rs

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -384,16 +384,23 @@ impl Source {
384384
}
385385

386386
impl ExternalPlugin {
387-
fn match_globs(dir: &Path, pattern: &str, files: &mut Vec<PathBuf>) -> Result<bool> {
387+
fn match_globs(dir: &Path, patterns: &[String], files: &mut Vec<PathBuf>) -> Result<bool> {
388+
let debug = || {
389+
patterns
390+
.iter()
391+
.map(|p| format!("`{}`", p))
392+
.collect::<Vec<_>>()
393+
.join(", ")
394+
};
388395
let mut matched = false;
389-
for entry in globwalk::GlobWalkerBuilder::new(dir, &pattern)
396+
for entry in globwalk::GlobWalkerBuilder::from_patterns(dir, patterns)
390397
.sort_by(|a, b| a.file_name().cmp(b.file_name()))
391398
.build()
392-
.with_context(s!("failed to parse glob pattern `{}`", pattern))?
399+
.with_context(s!("failed to parse glob patterns: {}", debug()))?
393400
{
394401
files.push(
395402
entry
396-
.with_context(s!("failed to read path matched by pattern `{}`", &pattern))?
403+
.with_context(s!("failed to read path matched by patterns: {}", debug()))?
397404
.into_path(),
398405
);
399406
matched = true;
@@ -462,21 +469,23 @@ impl ExternalPlugin {
462469

463470
// If the plugin defined what files to use, we do all of them.
464471
if let Some(uses) = &uses {
465-
for u in uses {
466-
let pattern = hbs
467-
.render_template(u, &data)
468-
.with_context(s!("failed to render template `{}`", u))?;
469-
if !Self::match_globs(dir, &pattern, &mut files)? {
470-
bail!("failed to find any files matching `{}`", &pattern);
471-
};
472+
let patterns = uses
473+
.iter()
474+
.map(|u| {
475+
hbs.render_template(u, &data)
476+
.with_context(s!("failed to render template `{}`", u))
477+
})
478+
.collect::<Result<Vec<_>>>()?;
479+
if !Self::match_globs(dir, &patterns, &mut files)? {
480+
bail!("failed to find any files matching any of `{:?}`", patterns);
472481
}
473482
// Otherwise we try to figure out which files to use...
474483
} else {
475484
for g in global_matches {
476485
let pattern = hbs
477486
.render_template(g, &data)
478487
.with_context(s!("failed to render template `{}`", g))?;
479-
if Self::match_globs(dir, &pattern, &mut files)? {
488+
if Self::match_globs(dir, &[pattern], &mut files)? {
480489
break;
481490
}
482491
}

0 commit comments

Comments
 (0)