cmd/vulnreport: add format command

Change-Id: Ib8b170ba8ca857b62431ee41a423cd9ab1a58ade
Reviewed-on: https://go-review.googlesource.com/c/vulndb/+/382514
Trust: Jonathan Amsterdam <jba@google.com>
Run-TryBot: Jonathan Amsterdam <jba@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Julie Qiu <julie@golang.org>
diff --git a/cmd/vulnreport/main.go b/cmd/vulnreport/main.go
index 566000c..1818484 100644
--- a/cmd/vulnreport/main.go
+++ b/cmd/vulnreport/main.go
@@ -40,6 +40,8 @@
 		fmt.Fprintf(flag.CommandLine.Output(), "  create [githubIssueNumber]: creates a new vulnerability YAML report\n")
 		fmt.Fprintf(flag.CommandLine.Output(), "  lint [filename.yaml]: lints a vulnerability YAML report\n")
 		fmt.Fprintf(flag.CommandLine.Output(), "  newcve [filename.yaml]: creates a CVE report from the provided YAML report\n")
+		fmt.Fprintf(flag.CommandLine.Output(), "  fix [filename.yaml]: fixes a YAML report\n")
+		fmt.Fprintf(flag.CommandLine.Output(), "  formats [filename.yaml]: reformats a YAML report\n")
 		flag.PrintDefaults()
 	}
 
@@ -80,6 +82,10 @@
 		if err := fix(name); err != nil {
 			log.Fatal(err)
 		}
+	case "format":
+		if err := format(name); err != nil {
+			log.Fatal(err)
+		}
 	default:
 		flag.Usage()
 		log.Fatalf("unsupported command: %q", cmd)
@@ -169,6 +175,15 @@
 	return nil
 }
 
+func format(filename string) (err error) {
+	derrors.Wrap(&err, "format(%q)", filename)
+	r, err := report.Read(filename)
+	if err != nil {
+		return err
+	}
+	return r.Write(filename)
+}
+
 func fix(filename string) (err error) {
 	defer derrors.Wrap(&err, "fix(%q)", filename)
 	r, err := report.Read(filename)