aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2026-01-15 21:15:00 +0700
committerShulhan <ms@kilabit.info>2026-01-15 21:23:48 +0700
commitaa7f2df15e91f5c94807247228cf82e18fe03887 (patch)
tree2587dda62755cc69bb785786dd2c80214a23f679
parent32e4ea9ddf0c2d37f00fa81a4fb1dfe67420b8fe (diff)
downloadspdxconv-aa7f2df15e91f5c94807247228cf82e18fe03887.tar.xz
all: allow multiple pattern in match-file-comment
This makes the configuration more concise where pattern can be split into multi lines. While at it, add more pattern to match-file-comment.
-rw-r--r--README.md36
-rw-r--r--config.go30
-rw-r--r--file.go2
-rw-r--r--match_file_comment.go29
-rw-r--r--spdxconv_test.go67
-rw-r--r--testdata/Apply_fromReport_test.txt19
-rw-r--r--testdata/Apply_test.txt19
-rw-r--r--testdata/loadConfig/config_exists/spdxconv.cfg15
-rw-r--r--testdata/scan/spdxconv.cfg24
9 files changed, 155 insertions, 86 deletions
diff --git a/README.md b/README.md
index 33aad96..f1f15e9 100644
--- a/README.md
+++ b/README.md
@@ -66,9 +66,6 @@ This will create the `spdxconv.cfg` file in the current directory with the
following content,
```
-# SPDX-License-Identifier: CC0-1.0
-# SPDX-FileCopyrightText: 2026 M. Shulhan <ms@kilabit.info>
-
[default]
license_identifier =
copyright_year =
@@ -76,11 +73,17 @@ file_copyright_text =
max_line_match = 10
[match-file-comment]
-pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx|jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx)$"
+pattern = "^.*\\.(jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^(.*/)?(go.mod|go.work)$"
prefix = "//"
[match-file-comment]
-pattern = "^.*\\.(bash|csh|dockerfile|env|gitignore|hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
+pattern = "^.*\\.(aff|aww|bash|csh|d2|dockerfile|env|gitignore|gitmodules|hcl|ipynb)$"
+pattern = "^.*\\.(make|pl|pm|py|ps1|rb|sh|tf|toml|yaml|yml|zsh)$"
+pattern = "^(.*/)?([Dd]ockerfile|[Mm]akefile|robots.txt)$"
+# systemd.unit(5).
+pattern = "^.*\\.(automount|device|mount|path|scope|service|slice|socket|swap|target|timer)$"
prefix = "#"
[match-file-comment]
@@ -89,7 +92,7 @@ prefix = "/*"
suffix = "*/"
[match-file-comment]
-pattern = "^.*\\.(fxml|htm|html|html5|kml|markdown|md|xml)$"
+pattern = "^.*\\.(fxml|gohtml|htm|html|html5|kml|markdown|md|xml)$"
prefix = "<!--"
suffix = "-->"
@@ -108,19 +111,24 @@ prefix = "%"
# File name that match with this pattern will have the ".license" file
# created.
[match-file-comment]
-pattern = "^.*\\.(apk|app|bz2|csv|doc|docx|exe|gif|gz|jpeg|jpg|json|pdf|png|ppt|pptx|svg|svgz|tar|tgz|xls|xlsx|zip)$"
+pattern = "^.*\\.(apk|app|bz2|exe|gz|tar|tgz|zip)$"
+pattern = "^.*\\.(csv|doc|docx|json|pdf|ppt|pptx|xls|xlsx)$"
+pattern = "^.*\\.(bmp|gif|ico|jpeg|jpg|png|svg|svgz|webp)$"
+pattern = "^.*\\.(3gp|avi|flv|mkv|mp3|mp4|mpeg|mpg|mpg4)$"
+pattern = "^.*\\.(acc|ogg|mp3)$"
+pattern = "^(.*/)?(go.sum|go.work.sum)$"
[match-license]
-pattern = "^(//+|#+|/\\*+|<!--+)?\\s*(.*)governed by a BSD-style(.*)$"
+pattern = "^(//+|#+|/\\*+|<!--+|--+)?\\s*(.*)governed by a BSD-style(.*)$"
license_identifier = BSD-3-Clause
-delete_line_before = "^(//+|#+|/\\*+|<!--+)$"
-delete_line_after = "^(//+|#+|/\\*+|<!--+)?\\s*license that can(.*)$"
-delete_line_after = "^(//+|#+|\\*+/|--+>)$"
+delete_line_before = "^(//+|#+|/\\*+|<!--+|--+)$"
+delete_line_after = "^(//+|#+|/\\*+|<!--+|--+)?\\s*license that can(.*)$"
+delete_line_after = "^(//+|#+|\\*+/|--+>|--+)$"
[match-copyright]
-pattern = "^(//+|#+|/\\*+|<!--+)?\\s*Copyright\\s+(?<year>\\d{4}),?\\s+(?<author>.*)\\s+<(?<contact>.*)>.*$"
-delete_line_before = "^(//+|#+|/\\*+|<!--+)$"
-delete_line_after = "^(//+|#+|\\*+/|--+>)$"
+pattern = "^(//+|#+|/\\*+|<!--+|--+)?\\s*Copyright\\s+(?<year>\\d{4}),?\\s+(?<author>.*)\\s+<(?<contact>.*)>.*$"
+delete_line_before = "^(//+|#+|/\\*+|<!--+|--+)$"
+delete_line_after = "^(//+|#+|\\*+/|--+>|--+)$"
```
The configuration use the `ini` file format.
diff --git a/config.go b/config.go
index 8146032..00164ba 100644
--- a/config.go
+++ b/config.go
@@ -19,19 +19,17 @@ file_copyright_text =
max_line_match = 10
[match-file-comment]
-pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx|jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx)$"
+pattern = "^.*\\.(jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^(.*/)?(go.mod|go.work)$"
prefix = "//"
[match-file-comment]
-pattern = "^(.*/)?go.mod$"
-prefix = "//"
-
-[match-file-comment]
-pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
-prefix = "#"
-
-[match-file-comment]
-pattern = "^(.*/)?[Mm]akefile$"
+pattern = "^.*\\.(aff|aww|bash|csh|d2|dockerfile|env|gitignore|gitmodules|hcl|ipynb)$"
+pattern = "^.*\\.(make|pl|pm|py|ps1|rb|sh|tf|toml|yaml|yml|zsh)$"
+pattern = "^(.*/)?([Dd]ockerfile|[Mm]akefile|robots.txt)$"
+# systemd.unit(5).
+pattern = "^.*\\.(automount|device|mount|path|scope|service|slice|socket|swap|target|timer)$"
prefix = "#"
[match-file-comment]
@@ -40,7 +38,7 @@ prefix = "/*"
suffix = "*/"
[match-file-comment]
-pattern = "^.*\\.(fxml|htm|html|html5|kml|markdown|md|xml)$"
+pattern = "^.*\\.(fxml|gohtml|htm|html|html5|kml|markdown|md|xml)$"
prefix = "<!--"
suffix = "-->"
@@ -59,10 +57,12 @@ prefix = "%"
# File name that match with this pattern will have the ".license" file
# created.
[match-file-comment]
-pattern = "^.*\\.(apk|app|bz2|csv|doc|docx|exe|gif|gz|jpeg|jpg|json|pdf|png|ppt|pptx|svg|svgz|tar|tgz|xls|xlsx|zip)$"
-
-[match-file-comment]
-pattern = "^(.*/)?go.sum$"
+pattern = "^.*\\.(apk|app|bz2|exe|gz|tar|tgz|zip)$"
+pattern = "^.*\\.(csv|doc|docx|json|pdf|ppt|pptx|xls|xlsx)$"
+pattern = "^.*\\.(bmp|gif|ico|jpeg|jpg|png|svg|svgz|webp)$"
+pattern = "^.*\\.(3gp|avi|flv|mkv|mp3|mp4|mpeg|mpg|mpg4)$"
+pattern = "^.*\\.(acc|ogg|mp3)$"
+pattern = "^(.*/)?(go.sum|go.work.sum)$"
[match-license]
pattern = "^(//+|#+|/\\*+|<!--+|--+)?\\s*(.*)governed by a BSD-style(.*)$"
diff --git a/file.go b/file.go
index 80c369c..6568137 100644
--- a/file.go
+++ b/file.go
@@ -152,7 +152,7 @@ func (f *file) detectComment(cfg *config) {
}
var basename = strings.ToLower(filepath.Base(f.path))
for _, mfc := range cfg.MatchFileComment {
- if mfc.rePattern.MatchString(basename) {
+ if mfc.isMatch(basename) {
if mfc.isDirectLicense() {
f.group = groupBinary
return
diff --git a/match_file_comment.go b/match_file_comment.go
index e5b4233..90ce22e 100644
--- a/match_file_comment.go
+++ b/match_file_comment.go
@@ -14,19 +14,22 @@ import (
// File name that have empty Prefix and Suffix and match with the pattern will
// have the ".license" file created.
type matchFileComment struct {
- rePattern *regexp.Regexp
+ Prefix string `ini:"match-file-comment::prefix"`
+ Suffix string `ini:"match-file-comment::suffix"`
- Pattern string `ini:"match-file-comment::pattern"`
- Prefix string `ini:"match-file-comment::prefix"`
- Suffix string `ini:"match-file-comment::suffix"`
+ Pattern []string `ini:"match-file-comment::pattern"`
+ rePattern []*regexp.Regexp
}
func (mfc *matchFileComment) init() (err error) {
var logp = `match-file-comment`
-
- mfc.rePattern, err = regexp.Compile(mfc.Pattern)
- if err != nil {
- return fmt.Errorf(`%s: pattern %q: %w`, logp, mfc.Pattern, err)
+ var re *regexp.Regexp
+ for _, pattern := range mfc.Pattern {
+ re, err = regexp.Compile(pattern)
+ if err != nil {
+ return fmt.Errorf(`%s: pattern %q: %w`, logp, pattern, err)
+ }
+ mfc.rePattern = append(mfc.rePattern, re)
}
return nil
}
@@ -34,3 +37,13 @@ func (mfc *matchFileComment) init() (err error) {
func (mfc *matchFileComment) isDirectLicense() bool {
return mfc.Prefix == `` && mfc.Suffix == ``
}
+
+// isMatch return true if the filename match with one of the pattern.
+func (mfc *matchFileComment) isMatch(filename string) bool {
+ for _, re := range mfc.rePattern {
+ if re.MatchString(filename) {
+ return true
+ }
+ }
+ return false
+}
diff --git a/spdxconv_test.go b/spdxconv_test.go
index 1496e14..52bd114 100644
--- a/spdxconv_test.go
+++ b/spdxconv_test.go
@@ -37,38 +37,54 @@ func TestInit(t *testing.T) {
exp := config{
MaxLineMatch: 10,
MatchFileComment: []*matchFileComment{{
- Pattern: `^.*\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx|jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$`,
- Prefix: `//`,
- }, {
- Pattern: `^(.*/)?go.mod$`,
- Prefix: `//`,
- }, {
- Pattern: `^.*\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$`,
- Prefix: `#`,
+ Pattern: []string{
+ `^.*\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx)$`,
+ `^.*\.(jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$`,
+ `^(.*/)?(go.mod|go.work)$`,
+ },
+ Prefix: `//`,
}, {
- Pattern: `^(.*/)?[Mm]akefile$`,
- Prefix: `#`,
+ Pattern: []string{
+ `^.*\.(aff|aww|bash|csh|d2|dockerfile|env|gitignore|gitmodules)$`,
+ `^.*\.(hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|toml|yaml|yml|zsh)$`,
+ `^(.*/)?([Dd]ockerfile|[Mm]akefile|robots.txt)$`,
+ `^.*\.(automount|device|mount|path|scope|service|slice|socket|swap|target|timer)$`,
+ },
+ Prefix: `#`,
}, {
- Pattern: `^.*\.(css)$`,
+ Pattern: []string{`^.*\.(css)$`},
Prefix: `/*`,
Suffix: `*/`,
}, {
- Pattern: `^.*\.(fxml|htm|html|html5|kml|markdown|md|xml)$`,
- Prefix: `<!--`,
- Suffix: `-->`,
- }, {
- Pattern: `^.*\.(lua|sql)$`,
- Prefix: `--`,
+ Pattern: []string{
+ `^.*\.(fxml|gohtml|htm|html|html5|kml|markdown|md|xml)$`,
+ },
+ Prefix: `<!--`,
+ Suffix: `-->`,
}, {
- Pattern: `^.*\.(rst)$`,
- Prefix: `..`,
+ Pattern: []string{
+ `^.*\.(lua|sql)$`,
+ },
+ Prefix: `--`,
}, {
- Pattern: `^.*\.(tex)$`,
- Prefix: `%`,
+ Pattern: []string{
+ `^.*\.(rst)$`,
+ },
+ Prefix: `..`,
}, {
- Pattern: `^.*\.(apk|app|bz2|csv|doc|docx|exe|gif|gz|jpeg|jpg|json|pdf|png|ppt|pptx|svg|svgz|tar|tgz|xls|xlsx|zip)$`,
+ Pattern: []string{
+ `^.*\.(tex)$`,
+ },
+ Prefix: `%`,
}, {
- Pattern: `^(.*/)?go.sum$`,
+ Pattern: []string{
+ `^.*\.(apk|app|bz2|exe|gz|tar|tgz|zip)$`,
+ `^.*\.(csv|doc|docx|json|pdf|ppt|pptx|xls|xlsx)$`,
+ `^.*\.(bmp|gif|ico|jpeg|jpg|png|svg|svgz|webp)$`,
+ `^.*\.(3gp|avi|flv|mkv|mp3|mp4|mpeg|mpg|mpg4)$`,
+ `^.*\.(acc|ogg|mp3)$`,
+ `^(.*/)?(go.sum|go.work.sum)$`,
+ },
}},
MatchLicense: []*matchLicense{{
Pattern: `^(//+|#+|/\*+|<!--+|--+)?\s*(.*)governed by a BSD-style(.*)$`,
@@ -92,7 +108,10 @@ func TestInit(t *testing.T) {
}},
}
for _, mfc := range exp.MatchFileComment {
- mfc.rePattern = regexp.MustCompile(mfc.Pattern)
+ for _, pattern := range mfc.Pattern {
+ re := regexp.MustCompile(pattern)
+ mfc.rePattern = append(mfc.rePattern, re)
+ }
}
for _, ml := range exp.MatchLicense {
ml.rePattern = regexp.MustCompile(ml.Pattern)
diff --git a/testdata/Apply_fromReport_test.txt b/testdata/Apply_fromReport_test.txt
index cecf3ee..8a9eaf8 100644
--- a/testdata/Apply_fromReport_test.txt
+++ b/testdata/Apply_fromReport_test.txt
@@ -13,11 +13,17 @@ copyright_year = 2026
file_copyright_text = M. Shulhan <ms@kilabit.info>
[match-file-comment]
-pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx|jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx)$"
+pattern = "^.*\\.(jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^(.*/)?(go.mod|go.work)$"
prefix = "//"
[match-file-comment]
-pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
+pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make)$"
+pattern = "^.*\\.(pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
+pattern = "^(.*/)?[Mm]akefile$"
+# systemd.unit(5).
+pattern = "^.*\\.(automount|device|mount|path|scope|service|slice|socket|swap|target|timer)$"
prefix = "#"
[match-file-comment]
@@ -26,7 +32,7 @@ prefix = "/*"
suffix = "*/"
[match-file-comment]
-pattern = "^.*\\.(fxml|htm|html|html5|kml|markdown|md|xml)$"
+pattern = "^.*\\.(fxml|gohtml|htm|html|html5|kml|markdown|md|xml)$"
prefix = "<!--"
suffix = "-->"
@@ -45,7 +51,12 @@ prefix = "%"
# File name that match with this pattern will have the ".license" file
# created.
[match-file-comment]
-pattern = "^.*\\.(apk|app|bz2|csv|doc|docx|exe|gif|gz|jpeg|jpg|json|pdf|png|ppt|pptx|svg|svgz|tar|tgz|xls|xlsx|zip)$"
+pattern = "^.*\\.(apk|app|bz2|exe|gz|tar|tgz|zip)$"
+pattern = "^.*\\.(csv|doc|docx|json|pdf|ppt|pptx|xls|xlsx)$"
+pattern = "^.*\\.(bmp|gif|ico|jpeg|jpg|png|svg|svgz)$"
+pattern = "^.*\\.(3gp|avi|flv|mkv|mp3|mp4|mpeg|mpg|mpg4)$"
+pattern = "^.*\\.(acc|ogg|mp3)$"
+pattern = "^(.*/)?(go.sum|go.work.sum)$"
[match-license]
pattern = "^(//+|#+|/\\*+|<!--+|--+)?\\s*(.*)governed by a BSD-style(.*)$"
diff --git a/testdata/Apply_test.txt b/testdata/Apply_test.txt
index a6723e2..068a796 100644
--- a/testdata/Apply_test.txt
+++ b/testdata/Apply_test.txt
@@ -13,11 +13,17 @@ copyright_year = 2026
file_copyright_text = M. Shulhan <ms@kilabit.info>
[match-file-comment]
-pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx|jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx)$"
+pattern = "^.*\\.(jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^(.*/)?(go.mod|go.work)$"
prefix = "//"
[match-file-comment]
-pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
+pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make)$"
+pattern = "^.*\\.(pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
+pattern = "^(.*/)?[Mm]akefile$"
+# systemd.unit(5).
+pattern = "^.*\\.(automount|device|mount|path|scope|service|slice|socket|swap|target|timer)$"
prefix = "#"
[match-file-comment]
@@ -26,7 +32,7 @@ prefix = "/*"
suffix = "*/"
[match-file-comment]
-pattern = "^.*\\.(fxml|htm|html|html5|kml|markdown|md|xml)$"
+pattern = "^.*\\.(fxml|gohtml|htm|html|html5|kml|markdown|md|xml)$"
prefix = "<!--"
suffix = "-->"
@@ -45,7 +51,12 @@ prefix = "%"
# File name that match with this pattern will have the ".license" file
# created.
[match-file-comment]
-pattern = "^.*\\.(apk|app|bz2|csv|doc|docx|exe|gif|gz|jpeg|jpg|json|pdf|png|ppt|pptx|svg|svgz|tar|tgz|xls|xlsx|zip)$"
+pattern = "^.*\\.(apk|app|bz2|exe|gz|tar|tgz|zip)$"
+pattern = "^.*\\.(csv|doc|docx|json|pdf|ppt|pptx|xls|xlsx)$"
+pattern = "^.*\\.(bmp|gif|ico|jpeg|jpg|png|svg|svgz)$"
+pattern = "^.*\\.(3gp|avi|flv|mkv|mp3|mp4|mpeg|mpg|mpg4)$"
+pattern = "^.*\\.(acc|ogg|mp3)$"
+pattern = "^(.*/)?(go.sum|go.work.sum)$"
[match-license]
pattern = "^(//+|#+|/\\*+|<!--+|--+)?\\s*(.*)governed by a BSD-style(.*)$"
diff --git a/testdata/loadConfig/config_exists/spdxconv.cfg b/testdata/loadConfig/config_exists/spdxconv.cfg
index b92f0c8..aa26f19 100644
--- a/testdata/loadConfig/config_exists/spdxconv.cfg
+++ b/testdata/loadConfig/config_exists/spdxconv.cfg
@@ -8,11 +8,15 @@ file_copyright_text = Author <contact@email.local>
max_line_match = 10
[match-file-comment]
-pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx|jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx)$"
+pattern = "^.*\\.(jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^(.*/)?(go.mod|go.work)$"
prefix = "//"
[match-file-comment]
-pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
+pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make)$"
+pattern = "^.*\\.(pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
+pattern = "^(.*/)?[Mm]akefile$"
prefix = "#"
[match-file-comment]
@@ -40,7 +44,12 @@ prefix = "%"
# File name that match with this pattern will have the ".license" file
# created.
[match-file-comment]
-pattern = "^.*\\.(apk|app|bz2|csv|doc|docx|exe|gif|gz|jpeg|jpg|json|pdf|png|ppt|pptx|svg|svgz|tar|tgz|xls|xlsx|zip)$"
+pattern = "^.*\\.(apk|app|bz2|exe|gz|tar|tgz|zip)$"
+pattern = "^.*\\.(csv|doc|docx|json|pdf|ppt|pptx|xls|xlsx)$"
+pattern = "^.*\\.(bmp|gif|ico|jpeg|jpg|png|svg|svgz)$"
+pattern = "^.*\\.(3gp|avi|flv|mkv|mp3|mp4|mpeg|mpg|mpg4)$"
+pattern = "^.*\\.(acc|ogg|mp3)$"
+pattern = "^(.*/)?(go.sum|go.work.sum)$"
[match-license]
pattern = "^(//+|#+|/\\*+|<!--+|--+)?\\s*(.*)governed by a BSD-style(.*)$"
diff --git a/testdata/scan/spdxconv.cfg b/testdata/scan/spdxconv.cfg
index afbdb31..1f5c6e3 100644
--- a/testdata/scan/spdxconv.cfg
+++ b/testdata/scan/spdxconv.cfg
@@ -8,18 +8,14 @@ file_copyright_text = Author <contact@email.local>
max_line_match = 10
[match-file-comment]
-pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx|jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^.*\\.(adoc|asciidoc|c|cc|cpp|cs|dart|go|h|hh|hpp|java|js|jsx)$"
+pattern = "^.*\\.(jsonc|kt|kts|php|rs|sass|scss|swift|ts|tsx)$"
+pattern = "^(.*/)?(go.mod|go.work)$"
prefix = "//"
[match-file-comment]
-pattern = "^(.*/)?go.mod$"
-prefix = "//"
-
-[match-file-comment]
-pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make|pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
-prefix = "#"
-
-[match-file-comment]
+pattern = "^.*\\.(aff|bash|csh|dockerfile|env|gitignore|hcl|ipynb|make)$"
+pattern = "^.*\\.(pl|pm|py|ps1|rb|sh|tf|yaml|yml|zsh)$"
pattern = "^(.*/)?[Mm]akefile$"
prefix = "#"
@@ -48,10 +44,12 @@ prefix = "%"
# File name that match with this pattern will have the ".license" file
# created.
[match-file-comment]
-pattern = "^.*\\.(apk|app|bz2|csv|doc|docx|exe|gif|gz|jpeg|jpg|json|pdf|png|ppt|pptx|svg|svgz|tar|tgz|xls|xlsx|zip)$"
-
-[match-file-comment]
-pattern = "^(.*/)?go.sum$"
+pattern = "^.*\\.(apk|app|bz2|exe|gz|tar|tgz|zip)$"
+pattern = "^.*\\.(csv|doc|docx|json|pdf|ppt|pptx|xls|xlsx)$"
+pattern = "^.*\\.(bmp|gif|ico|jpeg|jpg|png|svg|svgz)$"
+pattern = "^.*\\.(3gp|avi|flv|mkv|mp3|mp4|mpeg|mpg|mpg4)$"
+pattern = "^.*\\.(acc|ogg|mp3)$"
+pattern = "^(.*/)?(go.sum|go.work.sum)$"
[match-license]
pattern = "^(//+|#+|/\\*+|<!--+|--+)?\\s*(.*)governed by a BSD-style(.*)$"