mirror of
https://github.com/aquasecurity/trivy.git
synced 2025-12-12 07:40:48 -08:00
* Fix subcommands help * refactor: call ShowAppHelpAndExit * refactor: remove an unused error * test: remove exit cases Co-authored-by: knqyf263 <knqyf263@gmail.com>
59 lines
1.2 KiB
Go
59 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/urfave/cli/v2"
|
|
"go.uber.org/zap"
|
|
"golang.org/x/xerrors"
|
|
)
|
|
|
|
type ArtifactConfig struct {
|
|
Input string
|
|
Timeout time.Duration
|
|
ClearCache bool
|
|
|
|
skipDirectories string
|
|
SkipDirectories []string
|
|
skipFiles string
|
|
SkipFiles []string
|
|
|
|
// this field is populated in Init()
|
|
Target string
|
|
}
|
|
|
|
func NewArtifactConfig(c *cli.Context) ArtifactConfig {
|
|
return ArtifactConfig{
|
|
Input: c.String("input"),
|
|
Timeout: c.Duration("timeout"),
|
|
ClearCache: c.Bool("clear-cache"),
|
|
skipFiles: c.String("skip-files"),
|
|
skipDirectories: c.String("skip-dirs"),
|
|
}
|
|
}
|
|
|
|
func (c *ArtifactConfig) Init(ctx *cli.Context, logger *zap.SugaredLogger) (err error) {
|
|
if c.Input == "" && ctx.Args().Len() == 0 {
|
|
logger.Debug(`trivy requires at least 1 argument or --input option`)
|
|
cli.ShowAppHelpAndExit(ctx, 0)
|
|
} else if ctx.Args().Len() > 1 {
|
|
logger.Error(`multiple targets cannot be specified`)
|
|
return xerrors.New("arguments error")
|
|
}
|
|
|
|
if c.Input == "" {
|
|
c.Target = ctx.Args().First()
|
|
}
|
|
|
|
if c.skipDirectories != "" {
|
|
c.SkipDirectories = strings.Split(c.skipDirectories, ",")
|
|
}
|
|
|
|
if c.skipFiles != "" {
|
|
c.SkipFiles = strings.Split(c.skipFiles, ",")
|
|
}
|
|
|
|
return nil
|
|
}
|