github.com/devseccon/trivy@v0.47.1-0.20231123133102-bd902a0bd996/pkg/flag/module_flags.go (about) 1 package flag 2 3 import ( 4 "github.com/devseccon/trivy/pkg/module" 5 ) 6 7 // e.g. config yaml 8 // module: 9 // dir: "/path/to/my_modules" 10 // enable-modules: 11 // - spring4shell 12 13 var ( 14 ModuleDirFlag = Flag{ 15 Name: "module-dir", 16 ConfigName: "module.dir", 17 Default: module.DefaultDir, 18 Usage: "specify directory to the wasm modules that will be loaded", 19 Persistent: true, 20 } 21 EnableModulesFlag = Flag{ 22 Name: "enable-modules", 23 ConfigName: "module.enable-modules", 24 Default: []string{}, 25 Usage: "[EXPERIMENTAL] module names to enable", 26 Persistent: true, 27 } 28 ) 29 30 // ModuleFlagGroup defines flags for modules 31 type ModuleFlagGroup struct { 32 Dir *Flag 33 EnabledModules *Flag 34 } 35 36 type ModuleOptions struct { 37 ModuleDir string 38 EnabledModules []string 39 } 40 41 func NewModuleFlagGroup() *ModuleFlagGroup { 42 return &ModuleFlagGroup{ 43 Dir: &ModuleDirFlag, 44 EnabledModules: &EnableModulesFlag, 45 } 46 } 47 48 func (f *ModuleFlagGroup) Name() string { 49 return "Module" 50 } 51 52 func (f *ModuleFlagGroup) Flags() []*Flag { 53 return []*Flag{ 54 f.Dir, 55 f.EnabledModules, 56 } 57 } 58 59 func (f *ModuleFlagGroup) ToOptions() ModuleOptions { 60 return ModuleOptions{ 61 ModuleDir: getString(f.Dir), 62 EnabledModules: getStringSlice(f.EnabledModules), 63 } 64 }