From aa7f2df15e91f5c94807247228cf82e18fe03887 Mon Sep 17 00:00:00 2001 From: Shulhan Date: Thu, 15 Jan 2026 21:15:00 +0700 Subject: 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. --- README.md | 36 ++++++++------ config.go | 30 ++++++------ file.go | 2 +- match_file_comment.go | 29 ++++++++--- spdxconv_test.go | 67 +++++++++++++++++--------- testdata/Apply_fromReport_test.txt | 19 ++++++-- testdata/Apply_test.txt | 19 ++++++-- testdata/loadConfig/config_exists/spdxconv.cfg | 15 ++++-- testdata/scan/spdxconv.cfg | 24 +++++---- 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 - [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 = "" @@ -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 = "^(//+|#+|/\\*+|" @@ -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 = "^(//+|#+|/\\*+|`, - }, { - Pattern: `^.*\.(lua|sql)$`, - Prefix: `--`, + Pattern: []string{ + `^.*\.(fxml|gohtml|htm|html|html5|kml|markdown|md|xml)$`, + }, + Prefix: ``, }, { - 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: `^(//+|#+|/\*+|" @@ -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 = "^(//+|#+|/\\*+|" @@ -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 = "^(//+|#+|/\\*+|