mirror of
https://github.com/gojp/goreportcard.git
synced 2026-01-28 22:39:05 +08:00
63 lines
1.2 KiB
Go
63 lines
1.2 KiB
Go
package check
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
// License is the check for the existence of a license file
|
|
type License struct {
|
|
Dir string
|
|
Filenames []string
|
|
}
|
|
|
|
// Name returns the name of the display name of the command
|
|
func (g License) Name() string {
|
|
return "license"
|
|
}
|
|
|
|
// Weight returns the weight this check has in the overall average
|
|
func (g License) Weight() float64 {
|
|
return .10
|
|
}
|
|
|
|
// thank you https://github.com/ryanuber/go-license and client9
|
|
var licenses = []string{
|
|
"license",
|
|
"copying",
|
|
"copyright",
|
|
"licence",
|
|
"unlicense",
|
|
"copyleft",
|
|
}
|
|
|
|
// Percentage returns 0 if no LICENSE, 1 if LICENSE
|
|
func (g License) Percentage() (float64, []FileSummary, error) {
|
|
files, err := ioutil.ReadDir(g.Dir)
|
|
if err != nil {
|
|
return 0.0, []FileSummary{}, err
|
|
}
|
|
|
|
for _, file := range files {
|
|
name := strings.ToLower(file.Name())
|
|
|
|
if filepath.Ext(name) == "go" {
|
|
continue
|
|
}
|
|
|
|
for i := range licenses {
|
|
if strings.HasPrefix(name, licenses[i]) {
|
|
return 1.0, []FileSummary{}, nil
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0.0, []FileSummary{{"", "http://choosealicense.com/", []Error{}}}, nil
|
|
}
|
|
|
|
// Description returns the description of License
|
|
func (g License) Description() string {
|
|
return "Checks whether your project has a LICENSE file."
|
|
}
|