cmd/db,internal/database: merge gendb and dbdiff
srv/cmd/dbdiff and srv/cmd/gendb are merged into a single tool for
managing database creation.
Change-Id: Ic9314d1c1e0800a6be757b043be20889a1abcdfc
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/372998
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/srv/cmd/db/main.go b/srv/cmd/db/main.go
new file mode 100644
index 0000000..fe114ac
--- /dev/null
+++ b/srv/cmd/db/main.go
@@ -0,0 +1,42 @@
+// Copyright 2021 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Command db provides a tool for creating and checking the vulndb.
+package main
+
+import (
+ "flag"
+ "fmt"
+ "log"
+ "os"
+
+ "golang.org/x/vuln/srv/internal/database"
+)
+
+func main() {
+ flag.Usage = func() {
+ fmt.Fprintf(flag.CommandLine.Output(), "usage: db [cmd]\n")
+ fmt.Fprintf(flag.CommandLine.Output(), " diff [dbname1] [dbname2]: compare two different versions of the vulndb\n")
+ fmt.Fprintf(flag.CommandLine.Output(), " generate [reportsDir] [jsonDir]: create a new vulndb\n")
+ flag.PrintDefaults()
+ }
+ flag.Parse()
+ if flag.NArg() != 3 {
+ flag.Usage()
+ os.Exit(1)
+ }
+ cmd := os.Args[0]
+ switch cmd {
+ case "diff":
+ if err := database.Diff(os.Args[1], os.Args[2]); err != nil {
+ log.Fatal(err)
+ }
+ case "generate":
+ if err := database.Generate(os.Args[1], os.Args[2]); err != nil {
+ log.Fatal(err)
+ }
+ default:
+ log.Fatalf("unsupported command: %q", cmd)
+ }
+}
diff --git a/srv/cmd/gendb/main.go b/srv/cmd/gendb/main.go
index 73d4e50..136f47d 100644
--- a/srv/cmd/gendb/main.go
+++ b/srv/cmd/gendb/main.go
@@ -13,10 +13,6 @@
"golang.org/x/vuln/srv/internal/database"
)
-// TODO(rolandshoemaker): once we have the HTML representation ready this should
-// be the prefix for that.
-const dbURL = "https://go.googlesource.com/vuln/+/refs/heads/master/reports/"
-
var (
yamlDir = flag.String("reports", "reports", "Directory containing yaml reports")
jsonDir = flag.String("out", "out", "Directory to write JSON database to")
@@ -24,7 +20,7 @@
func main() {
flag.Parse()
- if err := database.Generate(*yamlDir, *jsonDir, dbURL); err != nil {
+ if err := database.Generate(*yamlDir, *jsonDir); err != nil {
log.Fatal(err)
}
}
diff --git a/srv/internal/database/generate.go b/srv/internal/database/generate.go
index e231774..917285b 100644
--- a/srv/internal/database/generate.go
+++ b/srv/internal/database/generate.go
@@ -22,7 +22,9 @@
"gopkg.in/yaml.v2"
)
-func Generate(yamlDir, jsonDir, dbURL string) (err error) {
+const dbURL = "https://go.googlesource.com/vuln/+/refs/heads/master/reports/"
+
+func Generate(yamlDir, jsonDir string) (err error) {
defer derrors.Wrap(&err, "Generate(%q)", yamlDir)
yamlFiles, err := ioutil.ReadDir(yamlDir)
if err != nil {