-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathitems.go
57 lines (48 loc) · 1.7 KB
/
items.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
package main
import (
"fmt"
"regexp"
"sort"
)
func Items() []LinterItem {
items := []LinterItem{&ItemInvalidKey{"env name invalid", "env name doesn't match predefined regex", "DeploymentConfig"},
&ItemSimilarKey{"env name collision", "near-identical env names", "DeploymentConfig"},
&ItemInvalidName{"name invalid", "namespace, name or container doesn't match predefined regex", "DeploymentConfig"},
&ItemHealth{"health", "health check missing or incomplete", "DeploymentConfig"},
&ItemImagePullPolicy{"image pull policy", "policy 'Always' or ':latest' image specified", "DeploymentConfig"},
&ItemLimits{"limits", "resource limits missing, incomplete or invalid", "DeploymentConfig"},
&ItemSecurity{"security", "privileged security context", "DeploymentConfig"},
&ItemRegistries{"registry", "registry not whitelisted", "DeploymentConfig"},
&ItemRouteConflict{"route conflict", "route has more than one name", "Route"}}
return items
}
func ItemsFiltered(pattern string) []LinterItem {
re := regexp.MustCompile(pattern)
items := Items() //all linter items
filtered := []LinterItem{}
for _, item := range items {
name := item.Name()
if re.FindStringIndex(name) == nil {
continue
}
filtered = append(filtered, item)
}
return filtered
}
func ListLinterItems() {
items := Items()
itemNames := make([]string, len(items))
m := make(map[string]string)
for index, item := range items {
name := item.Name()
itemNames[index] = name
m[name] = item.Description()
}
sort.Strings(itemNames)
rows := make([][]string, len(itemNames)+1)
rows[0] = []string{"Item", "Description"}
for index, name := range itemNames {
rows[index+1] = []string{name, m[name]}
}
fmt.Println(markdownTable(&rows))
}