internal/worker: propagate error in vulncheck scan

Also fix a build failure.

Change-Id: I51047a5e5b7bf9a008a7ef8be62ca674b7bf7197
Reviewed-on: https://go-review.googlesource.com/c/pkgsite-metrics/+/473715
Reviewed-by: Jonathan Amsterdam <jba@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Maceo Thompson <maceothompson@google.com>
Run-TryBot: Zvonimir Pavlinovic <zpavlinovic@google.com>
diff --git a/internal/worker/vulncheck_scan.go b/internal/worker/vulncheck_scan.go
index d4e30e1..f2f18a3 100644
--- a/internal/worker/vulncheck_scan.go
+++ b/internal/worker/vulncheck_scan.go
@@ -570,6 +570,9 @@
 	if err == nil && len(pkgErrors) > 0 {
 		err = fmt.Errorf("%v", pkgErrors)
 	}
+	if err != nil {
+		return nil, err
+	}
 
 	stats.pkgsMemory = memSubtract(currHeapUsage(), preScanMemory)
 
@@ -947,3 +950,17 @@
 	}
 	return strings.TrimSpace(string(out))
 }
+
+// fileExists checks if file path exists. Returns true
+// if the file exists or it cannot prove that it does
+// not exist. Otherwise, returns false.
+func fileExists(file string) bool {
+	if _, err := os.Stat(file); err == nil {
+		return true
+	} else if errors.Is(err, os.ErrNotExist) {
+		return false
+	}
+	// Conservatively return true if os.Stat fails
+	// for some other reason.
+	return true
+}