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  }