From 973d52fa7cdd564b8b62ca185c6e620149ea7d3e Mon Sep 17 00:00:00 2001 From: "aleksandr.vodyanov" Date: Thu, 16 May 2024 18:57:04 +0300 Subject: [PATCH] up --- main.go | 40 +++++++++++++++++++++++++++++++++++----- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index 756ffc4..16aae53 100644 --- a/main.go +++ b/main.go @@ -37,9 +37,11 @@ Flags: ` var ( - skipExtensionFlags stringSlice - ignorePatterns stringSlice - spdx spdxFlag + skipExtensionFlags stringSlice + ignorePatterns stringSlice + filesFlags stringSlice + spdx spdxFlag + fileList []string holder = flag.String("c", "Avroid, Ltd.", "copyright holder") license = flag.String("l", "commercial", "license type: commercial, apache, bsd, mit, mpl") @@ -56,6 +58,7 @@ func init() { } flag.Var(&skipExtensionFlags, "skip", "[deprecated: see -ignore] file extensions to skip, for example: -skip rb -skip go") flag.Var(&ignorePatterns, "ignore", "file patterns to ignore, for example: -ignore **/*.go -ignore vendor/**") + flag.Var(&listFiles, "files", "list of files to include, for example: -files 'src/main.c src/header.h'") flag.Var(&spdx, "s", "Include SPDX identifier in license header. Set -s=only to only include SPDX identifier.") } @@ -112,6 +115,14 @@ func main() { } } + // convert string of files to list of files + for _, l := range listFiles { + files := strings.Fields(l) + for _, file := range files { + fileList := append(fileList, file) + } + } + // map legacy license values if t, ok := legacyLicenseTypes[*license]; ok { *license = t @@ -160,6 +171,10 @@ func main() { fmt.Printf("%s\n", f.path) return errors.New("missing license header") } + if !hasCorrectAvroidLicense(f.path) { + fmt.Printf("%s\n", f.path) + return errors.New("incorrect year in license header") + } } else { modified, err := addLicense(f.path, f.mode, t, data) if err != nil { @@ -209,6 +224,9 @@ func walk(ch chan<- *file, start string) error { } return nil } + if fileList !fileMatches(path, fileList) { + return nil + } ch <- &file{path, fi.Mode()} return nil }) @@ -365,11 +383,23 @@ func isGenerated(b []byte) bool { } func hasLicense(b []byte) bool { - n := 1000 - if len(b) < 1000 { + n := 500 + if len(b) < 500 { n = len(b) } return bytes.Contains(bytes.ToLower(b[:n]), []byte("copyright")) || bytes.Contains(bytes.ToLower(b[:n]), []byte("mozilla public")) || bytes.Contains(bytes.ToLower(b[:n]), []byte("spdx-license-identifier")) } + +func hasCorrectAvroidLicense(b []byte) bool { + n := 500 + if len(b) < 500 { + n = len(b) + } + if bytes.Contains([]byte("AVROID, Ltd. written permission")) { + return bytes.Contains([]byte(fmt.Sprintf("Copyright (c) AVROID, Ltd., %s", data.Year)) + } + + return nil +}