Skip to content

Commit 23466fd

Browse files
Merge pull request #798 from ibuildthecloud/asterick
chore: allow wildcard matching in metadata key names
2 parents fa52ff4 + 538323b commit 23466fd

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

Diff for: pkg/parser/parser.go

+13-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"bufio"
55
"fmt"
66
"io"
7+
"maps"
8+
"path"
79
"regexp"
810
"slices"
911
"strconv"
@@ -16,7 +18,7 @@ import (
1618
var (
1719
sepRegex = regexp.MustCompile(`^\s*---+\s*$`)
1820
strictSepRegex = regexp.MustCompile(`^---\n$`)
19-
skipRegex = regexp.MustCompile(`^![-.:\w]+\s*$`)
21+
skipRegex = regexp.MustCompile(`^![-.:*\w]+\s*$`)
2022
)
2123

2224
func normalize(key string) string {
@@ -390,6 +392,16 @@ func assignMetadata(nodes []Node) (result []Node) {
390392
for _, node := range nodes {
391393
if node.ToolNode != nil {
392394
node.ToolNode.Tool.MetaData = metadata[node.ToolNode.Tool.Name]
395+
for wildcard := range metadata {
396+
if strings.Contains(wildcard, "*") {
397+
if m, err := path.Match(wildcard, node.ToolNode.Tool.Name); m && err == nil {
398+
if node.ToolNode.Tool.MetaData == nil {
399+
node.ToolNode.Tool.MetaData = map[string]string{}
400+
}
401+
maps.Copy(node.ToolNode.Tool.MetaData, metadata[wildcard])
402+
}
403+
}
404+
}
393405
}
394406
result = append(result, node)
395407
}

Diff for: pkg/parser/parser_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,11 @@ asdf2
258258
---
259259
!metadata:first:requirements.txt
260260
asdf
261+
262+
---
263+
!metadata:f*r*:other
264+
265+
foo bar
261266
`
262267
tools, err := ParseTools(strings.NewReader(input))
263268
require.NoError(t, err)
@@ -266,5 +271,6 @@ asdf
266271
autogold.Expect(map[string]string{
267272
"package.json": "foo=base\nf",
268273
"requirements.txt": "asdf",
274+
"other": "foo bar",
269275
}).Equal(t, tools[0].MetaData)
270276
}

0 commit comments

Comments
 (0)