up
This commit is contained in:
36
main.go
36
main.go
@@ -58,7 +58,7 @@ func init() {
|
|||||||
}
|
}
|
||||||
flag.Var(&skipExtensionFlags, "skip", "[deprecated: see -ignore] file extensions to skip, for example: -skip rb -skip go")
|
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(&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(&filesFlags, "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.")
|
flag.Var(&spdx, "s", "Include SPDX identifier in license header. Set -s=only to only include SPDX identifier.")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,10 +116,10 @@ func main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// convert string of files to list of files
|
// convert string of files to list of files
|
||||||
for _, l := range listFiles {
|
for _, l := range fileList {
|
||||||
files := strings.Fields(l)
|
files := strings.Fields(l)
|
||||||
for _, file := range files {
|
for _, file := range files {
|
||||||
fileList := append(fileList, file)
|
fileList = append(fileList, file)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,11 +167,16 @@ func main() {
|
|||||||
log.Printf("%s: %v", f.path, err)
|
log.Printf("%s: %v", f.path, err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
hasCorrectAvroidLicense, err := fileHasCorrectAvroidLicense(f.path, data)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("%s: %v", f.path, err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
if !hasLicense {
|
if !hasLicense {
|
||||||
fmt.Printf("%s\n", f.path)
|
fmt.Printf("%s\n", f.path)
|
||||||
return errors.New("missing license header")
|
return errors.New("missing license header")
|
||||||
}
|
}
|
||||||
if !hasCorrectAvroidLicense(f.path) {
|
if !hasCorrectAvroidLicense {
|
||||||
fmt.Printf("%s\n", f.path)
|
fmt.Printf("%s\n", f.path)
|
||||||
return errors.New("incorrect year in license header")
|
return errors.New("incorrect year in license header")
|
||||||
}
|
}
|
||||||
@@ -224,7 +229,7 @@ func walk(ch chan<- *file, start string) error {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
if fileList !fileMatches(path, fileList) {
|
if !fileMatches(path, fileList) {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
ch <- &file{path, fi.Mode()}
|
ch <- &file{path, fi.Mode()}
|
||||||
@@ -285,6 +290,17 @@ func fileHasLicense(path string) (bool, error) {
|
|||||||
return hasLicense(b) || isGenerated(b), nil
|
return hasLicense(b) || isGenerated(b), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// fileHasLicense reports whether the file at path contains a correct Avroid license header.
|
||||||
|
func fileHasCorrectAvroidLicense(path string, data licenseData) (bool, error) {
|
||||||
|
b, err := ioutil.ReadFile(path)
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
// If generated, we count it as if it has a license.
|
||||||
|
return hasCorrectAvroidLicense(b, data), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// licenseHeader populates the provided license template with data, and returns
|
||||||
// licenseHeader populates the provided license template with data, and returns
|
// licenseHeader populates the provided license template with data, and returns
|
||||||
// it with the proper prefix for the file type specified by path. The file does
|
// it with the proper prefix for the file type specified by path. The file does
|
||||||
// not need to actually exist, only its name is used to determine the prefix.
|
// not need to actually exist, only its name is used to determine the prefix.
|
||||||
@@ -326,7 +342,7 @@ func licenseHeader(path string, tmpl *template.Template, data licenseData) ([]by
|
|||||||
if base == "cmakelists.txt" || strings.HasSuffix(base, ".cmake.in") || strings.HasSuffix(base, ".cmake") {
|
if base == "cmakelists.txt" || strings.HasSuffix(base, ".cmake.in") || strings.HasSuffix(base, ".cmake") {
|
||||||
lic, err = executeTemplate(tmpl, data, "", "# ", "")
|
lic, err = executeTemplate(tmpl, data, "", "# ", "")
|
||||||
}
|
}
|
||||||
if base == "Jenkinsfile" || strings.HasSuffix(base, ".groovy" {
|
if base == "Jenkinsfile" || strings.HasSuffix(base, ".groovy") {
|
||||||
lic, err = executeTemplate(tmpl, data, "", "// ", "")
|
lic, err = executeTemplate(tmpl, data, "", "// ", "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -392,14 +408,14 @@ func hasLicense(b []byte) bool {
|
|||||||
bytes.Contains(bytes.ToLower(b[:n]), []byte("spdx-license-identifier"))
|
bytes.Contains(bytes.ToLower(b[:n]), []byte("spdx-license-identifier"))
|
||||||
}
|
}
|
||||||
|
|
||||||
func hasCorrectAvroidLicense(b []byte) bool {
|
func hasCorrectAvroidLicense(b []byte, data licenseData) bool {
|
||||||
n := 500
|
n := 500
|
||||||
if len(b) < 500 {
|
if len(b) < 500 {
|
||||||
n = len(b)
|
n = len(b)
|
||||||
}
|
}
|
||||||
if bytes.Contains([]byte("AVROID, Ltd. written permission")) {
|
if bytes.Contains(bytes.ToLower(b[:n]), []byte("avroid, ltd. written permission")) {
|
||||||
return bytes.Contains([]byte(fmt.Sprintf("Copyright (c) AVROID, Ltd., %s", data.Year))
|
return bytes.Contains(bytes.ToLower(b[:n]), []byte(fmt.Sprintf("copyright (c) avroid, ltd., %s", data.Year)))
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user