-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathlicense.go
61 lines (55 loc) · 1.51 KB
/
license.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package licensecheck
import (
"errors"
"github.com/vulsio/licensecheck/core/github"
"github.com/vulsio/licensecheck/core/golicense"
"github.com/vulsio/licensecheck/core/java"
"github.com/vulsio/licensecheck/core/nodejs"
"github.com/vulsio/licensecheck/core/php"
"github.com/vulsio/licensecheck/core/python"
"github.com/vulsio/licensecheck/core/ruby"
"github.com/vulsio/licensecheck/core/rust"
"github.com/vulsio/licensecheck/shared"
)
const (
Java = iota
PHP
Ruby
Python
Nodejs
Go
Rust
GitHub
)
// Scanner is struct to scan license info
// Crawler is exported to modify or make it easy to test by mock
type Scanner struct {
Crawler shared.Crawler
}
// ErrUnKnownScanType is error message when unexpected scanType is given
var ErrUnKnownScanType = errors.New("unknown scanType is specified")
// Scan returns result of license check(string) and confidence(float64)
func (s *Scanner) Scan(name, version string, scanType int) (string, float64, error) {
var sc shared.Scanner
switch scanType {
case Java:
sc = &java.Scanner{Crawler: s.Crawler}
case PHP:
sc = &php.Scanner{Crawler: s.Crawler}
case Ruby:
sc = &ruby.Scanner{Crawler: s.Crawler}
case Python:
sc = &python.Scanner{Crawler: s.Crawler}
case Nodejs:
sc = &nodejs.Scanner{Crawler: s.Crawler}
case Go:
sc = &golicense.Scanner{Crawler: s.Crawler}
case Rust:
sc = &rust.Scanner{Crawler: s.Crawler}
case GitHub:
sc = &github.Scanner{Crawler: s.Crawler}
default:
return "unknown", 0, ErrUnKnownScanType
}
return sc.ScanLicense(name, version)
}