feat(cli): add javadb metadata to version info (#3835)

This commit is contained in:
DmitriyLewen
2023-03-19 19:51:14 +06:00
committed by GitHub
parent 33074cfab3
commit 927acf9579
3 changed files with 37 additions and 1 deletions

View File

@@ -6,6 +6,7 @@ import (
"fmt"
"io"
"os"
"path/filepath"
"strings"
"time"
@@ -15,6 +16,7 @@ import (
awsScanner "github.com/aquasecurity/defsec/pkg/scanners/cloud/aws"
"github.com/aquasecurity/trivy-db/pkg/metadata"
javadb "github.com/aquasecurity/trivy-java-db/pkg/db"
awscommands "github.com/aquasecurity/trivy/pkg/cloud/aws/commands"
"github.com/aquasecurity/trivy/pkg/commands/artifact"
"github.com/aquasecurity/trivy/pkg/commands/server"
@@ -32,6 +34,7 @@ import (
type VersionInfo struct {
Version string `json:",omitempty"`
VulnerabilityDB *metadata.Metadata `json:",omitempty"`
JavaDB *metadata.Metadata `json:",omitempty"`
PolicyBundle *policy.Metadata `json:",omitempty"`
}
@@ -1073,6 +1076,7 @@ func NewVersionCommand(globalFlags *flag.GlobalFlagGroup) *cobra.Command {
func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer) {
var dbMeta *metadata.Metadata
var javadbMeta *metadata.Metadata
mc := metadata.NewClient(cacheDir)
meta, _ := mc.Get() // nolint: errcheck
@@ -1085,6 +1089,17 @@ func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer)
}
}
mcJava := javadb.NewMetadata(filepath.Join(cacheDir, "java-db"))
metaJava, _ := mcJava.Get() // nolint: errcheck
if !metaJava.UpdatedAt.IsZero() && !metaJava.NextUpdate.IsZero() && metaJava.Version != 0 {
javadbMeta = &metadata.Metadata{
Version: metaJava.Version,
NextUpdate: metaJava.NextUpdate.UTC(),
UpdatedAt: metaJava.UpdatedAt.UTC(),
DownloadedAt: metaJava.DownloadedAt.UTC(),
}
}
var pbMeta *policy.Metadata
pc, err := policy.NewClient(cacheDir, false)
if pc != nil && err == nil {
@@ -1096,6 +1111,7 @@ func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer)
b, _ := json.Marshal(VersionInfo{
Version: version,
VulnerabilityDB: dbMeta,
JavaDB: javadbMeta,
PolicyBundle: pbMeta,
})
fmt.Fprintln(outputWriter, string(b))
@@ -1110,6 +1126,15 @@ func showVersion(cacheDir, outputFormat, version string, outputWriter io.Writer)
`, dbMeta.Version, dbMeta.UpdatedAt.UTC(), dbMeta.NextUpdate.UTC(), dbMeta.DownloadedAt.UTC())
}
if javadbMeta != nil {
output += fmt.Sprintf(`Java DB:
Version: %d
UpdatedAt: %s
NextUpdate: %s
DownloadedAt: %s
`, javadbMeta.Version, javadbMeta.UpdatedAt.UTC(), javadbMeta.NextUpdate.UTC(), javadbMeta.DownloadedAt.UTC())
}
if pbMeta != nil {
output += fmt.Sprintf(`Policy Bundle:
Digest: %s

View File

@@ -32,6 +32,11 @@ Vulnerability DB:
UpdatedAt: 2022-03-02 06:07:07.99504083 +0000 UTC
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
DownloadedAt: 2022-03-02 10:03:38.383312 +0000 UTC
Java DB:
Version: 1
UpdatedAt: 2023-03-14 00:47:02.774253754 +0000 UTC
NextUpdate: 2023-03-17 00:47:02.774253254 +0000 UTC
DownloadedAt: 2023-03-14 03:04:55.058541039 +0000 UTC
Policy Bundle:
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
DownloadedAt: 2023-03-02 01:06:08.191725 +0000 UTC
@@ -65,11 +70,16 @@ Vulnerability DB:
UpdatedAt: 2022-03-02 06:07:07.99504083 +0000 UTC
NextUpdate: 2022-03-02 12:07:07.99504023 +0000 UTC
DownloadedAt: 2022-03-02 10:03:38.383312 +0000 UTC
Java DB:
Version: 1
UpdatedAt: 2023-03-14 00:47:02.774253754 +0000 UTC
NextUpdate: 2023-03-17 00:47:02.774253254 +0000 UTC
DownloadedAt: 2023-03-14 03:04:55.058541039 +0000 UTC
Policy Bundle:
Digest: sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd
DownloadedAt: 2023-03-02 01:06:08.191725 +0000 UTC
`
jsonOutput := `{"Version":"test","VulnerabilityDB":{"Version":2,"NextUpdate":"2022-03-02T12:07:07.99504023Z","UpdatedAt":"2022-03-02T06:07:07.99504083Z","DownloadedAt":"2022-03-02T10:03:38.383312Z"},"PolicyBundle":{"Digest":"sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd","DownloadedAt":"2023-03-01T17:06:08.191725-08:00"}}
jsonOutput := `{"Version":"test","VulnerabilityDB":{"Version":2,"NextUpdate":"2022-03-02T12:07:07.99504023Z","UpdatedAt":"2022-03-02T06:07:07.99504083Z","DownloadedAt":"2022-03-02T10:03:38.383312Z"},"JavaDB":{"Version":1,"NextUpdate":"2023-03-17T00:47:02.774253254Z","UpdatedAt":"2023-03-14T00:47:02.774253754Z","DownloadedAt":"2023-03-14T03:04:55.058541039Z"},"PolicyBundle":{"Digest":"sha256:19a017cdc798631ad42f6f4dce823d77b2989128f0e1a7f9bc83ae3c59024edd","DownloadedAt":"2023-03-01T17:06:08.191725-08:00"}}
`
tests := []struct {

View File

@@ -0,0 +1 @@
{"Version":1,"NextUpdate":"2023-03-17T00:47:02.774253254Z","UpdatedAt":"2023-03-14T00:47:02.774253754Z","DownloadedAt":"2023-03-14T03:04:55.058541039Z"}