From 71044417272911dd2d226c17a64f299de9bb37d1 Mon Sep 17 00:00:00 2001 From: EnumDev Date: Mon, 7 Apr 2025 14:58:56 +0300 Subject: [PATCH] Allow globstar in bpmhook path targets --- utils/hooks.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/utils/hooks.go b/utils/hooks.go index 4424c70..8ee9dc7 100644 --- a/utils/hooks.go +++ b/utils/hooks.go @@ -6,6 +6,8 @@ import ( "gopkg.in/yaml.v3" "os" "os/exec" + "path" + "path/filepath" "slices" "strings" "syscall" @@ -102,20 +104,24 @@ func (hook *BPMHook) Execute(packageChanges map[string]string, verbose bool, roo // Check if any targets are met targetMet := false - for _, t1 := range hook.Targets { + for _, target := range hook.Targets { if targetMet { break } if hook.TargetType == "package" { - for t2, operation := range packageChanges { - if t1 == t2 && slices.Contains(hook.TriggerOperations, operation) { + for change, operation := range packageChanges { + if target == change && slices.Contains(hook.TriggerOperations, operation) { targetMet = true break } } } else { - for _, t2 := range modifiedFiles { - if strings.HasPrefix(t2.Path, t1) { + glob, err := filepath.Glob(path.Join(rootDir, target)) + if err != nil { + return err + } + for _, change := range modifiedFiles { + if slices.Contains(glob, path.Join(rootDir, change.Path)) { targetMet = true break }