-
Notifications
You must be signed in to change notification settings - Fork 1
/
format.go
97 lines (87 loc) · 1.68 KB
/
format.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package version
import (
"strings"
"github.com/anchore/syft/syft/pkg"
)
const (
UnknownFormat Format = iota
SemanticFormat
ApkFormat
DebFormat
RpmFormat
PythonFormat
KBFormat
GemFormat
PortageFormat
)
type Format int
var formatStr = []string{
"UnknownFormat",
"Semantic",
"Apk",
"Deb",
"RPM",
"Python",
"KB",
"Gem",
"Portage",
}
var Formats = []Format{
SemanticFormat,
ApkFormat,
DebFormat,
RpmFormat,
PythonFormat,
KBFormat,
GemFormat,
PortageFormat,
}
func ParseFormat(userStr string) Format {
switch strings.ToLower(userStr) {
case strings.ToLower(SemanticFormat.String()), "semver":
return SemanticFormat
case strings.ToLower(ApkFormat.String()), "apk":
return ApkFormat
case strings.ToLower(DebFormat.String()), "dpkg":
return DebFormat
case strings.ToLower(RpmFormat.String()), "rpm":
return RpmFormat
case strings.ToLower(PythonFormat.String()), "python":
return PythonFormat
case strings.ToLower(KBFormat.String()), "kb":
return KBFormat
case strings.ToLower(GemFormat.String()), "gem":
return GemFormat
case strings.ToLower(PortageFormat.String()), "portage":
return PortageFormat
}
return UnknownFormat
}
func FormatFromPkgType(t pkg.Type) Format {
var format Format
switch t {
case pkg.ApkPkg:
format = ApkFormat
case pkg.DebPkg:
format = DebFormat
case pkg.RpmPkg:
format = RpmFormat
case pkg.GemPkg:
format = GemFormat
case pkg.PythonPkg:
format = PythonFormat
case pkg.KbPkg:
format = KBFormat
case pkg.PortagePkg:
format = PortageFormat
default:
format = UnknownFormat
}
return format
}
func (f Format) String() string {
if int(f) >= len(formatStr) || f < 0 {
return formatStr[0]
}
return formatStr[f]
}