/
module_flags.go
68 lines (58 loc) · 1.37 KB
/
module_flags.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
package flag
import (
"github.com/aquasecurity/trivy/pkg/module"
)
// e.g. config yaml
// module:
// dir: "/path/to/my_modules"
// enable-modules:
// - spring4shell
var (
ModuleDirFlag = Flag[string]{
Name: "module-dir",
ConfigName: "module.dir",
Default: module.DefaultDir,
Usage: "specify directory to the wasm modules that will be loaded",
Persistent: true,
}
EnableModulesFlag = Flag[[]string]{
Name: "enable-modules",
ConfigName: "module.enable-modules",
Default: []string{},
Usage: "[EXPERIMENTAL] module names to enable",
Persistent: true,
}
)
// ModuleFlagGroup defines flags for modules
type ModuleFlagGroup struct {
Dir *Flag[string]
EnabledModules *Flag[[]string]
}
type ModuleOptions struct {
ModuleDir string
EnabledModules []string
}
func NewModuleFlagGroup() *ModuleFlagGroup {
return &ModuleFlagGroup{
Dir: ModuleDirFlag.Clone(),
EnabledModules: EnableModulesFlag.Clone(),
}
}
func (f *ModuleFlagGroup) Name() string {
return "Module"
}
func (f *ModuleFlagGroup) Flags() []Flagger {
return []Flagger{
f.Dir,
f.EnabledModules,
}
}
func (f *ModuleFlagGroup) ToOptions() (ModuleOptions, error) {
if err := parseFlags(f); err != nil {
return ModuleOptions{}, err
}
return ModuleOptions{
ModuleDir: f.Dir.Value(),
EnabledModules: f.EnabledModules.Value(),
}, nil
}