Skip to content

Commit

Permalink
Support --exit-code
Browse files Browse the repository at this point in the history
  • Loading branch information
knqyf263 committed May 7, 2019
1 parent abeeb37 commit 7aa4070
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 4 deletions.
11 changes: 10 additions & 1 deletion cmd/trivy/main.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main

import (
l "log"
"os"
"strings"

Expand Down Expand Up @@ -59,6 +60,11 @@ OPTIONS:
Name: "output, o",
Usage: "output file name",
},
cli.IntFlag{
Name: "exit-code",
Usage: "Exit code when vulnerabilities were found",
Value: 0,
},
cli.BoolFlag{
Name: "skip-update",
Usage: "skip db update",
Expand All @@ -79,6 +85,9 @@ OPTIONS:

err := app.Run(os.Args)
if err != nil {
log.Logger.Fatal(err)
if log.Logger != nil {
log.Logger.Fatal(err)
}
l.Fatal(err)
}
}
4 changes: 3 additions & 1 deletion pkg/git/git.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ func CloneOrPull(url, repoPath string) (map[string]struct{}, error) {
updatedFiles[strings.TrimSpace(filename)] = struct{}{}
}
} else {
if !utils.IsCommandAvailable("git") {
log.Logger.Warn("Recommend installing git (if not, DB update is very slow)")
}
log.Logger.Debug("remove an existed directory")

s := spinner.New(spinner.CharSets[36], 100*time.Millisecond)
Expand Down Expand Up @@ -74,7 +77,6 @@ func clone(url, repoPath string) error {
if utils.IsCommandAvailable("git") {
return cloneByOSCommand(url, repoPath)
}
log.Logger.Warn("Recommend installing git (if not, DB update is very slow)")

_, err := git.PlainClone(repoPath, false, &git.CloneOptions{
URL: url,
Expand Down
11 changes: 9 additions & 2 deletions pkg/run.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@ func Run(c *cli.Context) (err error) {
for _, s := range strings.Split(c.String("severity"), ",") {
severity, err := vulnerability.NewSeverity(s)
if err != nil {
return xerrors.Errorf("error in severity option: %w", err)
log.Logger.Infof("error in severity option: %s", err)
cli.ShowAppHelpAndExit(c, 1)
}
severities = append(severities, severity)
}
Expand Down Expand Up @@ -93,7 +94,13 @@ func Run(c *cli.Context) (err error) {
}

if err = writer.Write(results); err != nil {
return err
return xerrors.Errorf("failed to write results: %w", err)
}

for _, result := range results {
if len(result.Vulnerabilities) > 0 {
os.Exit(c.Int("exit-code"))
}
}

return nil
Expand Down

0 comments on commit 7aa4070

Please sign in to comment.