internal/worker: move cvetriage files to cmd/cvetriage

To make way for the new worker, move the code for the cvetriage
command.

Except for repo.go, which we put in its own package
so it can be shared.

Change-Id: I15da4b4e68edc977cdd339a1473525aa75a226f5
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/368435
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/internal/worker/cve.go b/cmd/cvetriage/cve.go
similarity index 99%
rename from internal/worker/cve.go
rename to cmd/cvetriage/cve.go
index ee46d7c..6cb6838 100644
--- a/internal/worker/cve.go
+++ b/cmd/cvetriage/cve.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package worker
+package main
 
 import (
 	"errors"
diff --git a/cmd/cvetriage/main.go b/cmd/cvetriage/main.go
index 152e7a2..b396007 100644
--- a/cmd/cvetriage/main.go
+++ b/cmd/cvetriage/main.go
@@ -24,7 +24,6 @@
 
 	"golang.org/x/vuln/internal"
 	"golang.org/x/vuln/internal/derrors"
-	"golang.org/x/vuln/internal/worker"
 )
 
 func main() {
@@ -49,7 +48,7 @@
 	if err != nil {
 		return err
 	}
-	return worker.Run(repoPath, triaged)
+	return Run(repoPath, triaged)
 }
 
 const (
diff --git a/internal/worker/triager.go b/cmd/cvetriage/triager.go
similarity index 98%
rename from internal/worker/triager.go
rename to cmd/cvetriage/triager.go
index 1653e4c..7872f6a 100644
--- a/internal/worker/triager.go
+++ b/cmd/cvetriage/triager.go
@@ -2,7 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package worker
+package main
 
 import (
 	"golang.org/x/vuln/internal/cveschema"
diff --git a/internal/worker/worker.go b/cmd/cvetriage/worker.go
similarity index 92%
rename from internal/worker/worker.go
rename to cmd/cvetriage/worker.go
index 274a325..f310050 100644
--- a/internal/worker/worker.go
+++ b/cmd/cvetriage/worker.go
@@ -2,9 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// Package worker is used to fetch and create issues for CVEs that are
-// potential Go vulnerabilities.
-package worker
+package main
 
 import (
 	"context"
@@ -19,6 +17,7 @@
 	"github.com/go-git/go-git/v5/plumbing/object"
 	"golang.org/x/vuln/internal/cveschema"
 	"golang.org/x/vuln/internal/derrors"
+	"golang.org/x/vuln/internal/gitrepo"
 	"golang.org/x/vuln/internal/worker/log"
 )
 
@@ -28,14 +27,14 @@
 	defer derrors.Wrap(&err, "Run(triaged)")
 	var repo *git.Repository
 	if dirpath != "" {
-		repo, err = openRepo(dirpath)
+		repo, err = gitrepo.Open(dirpath)
 	} else {
-		repo, err = cloneRepo(cvelistRepoURL)
+		repo, err = gitrepo.Clone(gitrepo.CVElistRepoURL)
 	}
 	if err != nil {
 		return err
 	}
-	root, err := repoRoot(repo)
+	root, err := gitrepo.Root(repo)
 	if err != nil {
 		return err
 	}
diff --git a/internal/worker/repo.go b/internal/gitrepo/gitrepo.go
similarity index 63%
rename from internal/worker/repo.go
rename to internal/gitrepo/gitrepo.go
index 13d5390..4c40da0 100644
--- a/internal/worker/repo.go
+++ b/internal/gitrepo/gitrepo.go
@@ -2,7 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-package worker
+// Package gitrepo provides operations on git repos.
+package gitrepo
 
 import (
 	"context"
@@ -15,11 +16,11 @@
 	"golang.org/x/vuln/internal/worker/log"
 )
 
-const cvelistRepoURL = "https://github.com/CVEProject/cvelist"
+const CVElistRepoURL = "https://github.com/CVEProject/cvelist"
 
-// cloneRepo returns a repo by cloning the repo at repoURL.
-func cloneRepo(repoURL string) (repo *git.Repository, err error) {
-	defer derrors.Wrap(&err, "cloneRepo(%q)", repoURL)
+// Clone returns a repo by cloning the repo at repoURL.
+func Clone(repoURL string) (repo *git.Repository, err error) {
+	defer derrors.Wrap(&err, "gitrepo.Clone(%q)", repoURL)
 	log.Infof(context.Background(), "Cloning %q...", repoURL)
 	return git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
 		URL:           repoURL,
@@ -30,9 +31,9 @@
 	})
 }
 
-// openRepo returns a repo by opening the repo at the local path dirpath.
-func openRepo(dirpath string) (repo *git.Repository, err error) {
-	defer derrors.Wrap(&err, "openRepo(%q)", dirpath)
+// Open returns a repo by opening the repo at the local path dirpath.
+func Open(dirpath string) (repo *git.Repository, err error) {
+	defer derrors.Wrap(&err, "gitrepo.Open(%q)", dirpath)
 	log.Infof(context.Background(), "Opening %q...", dirpath)
 	repo, err = git.PlainOpen(dirpath)
 	if err != nil {
@@ -41,8 +42,8 @@
 	return repo, nil
 }
 
-// repoRoot returns the root tree of the repo at HEAD.
-func repoRoot(repo *git.Repository) (root *object.Tree, err error) {
+// Root returns the root tree of the repo at HEAD.
+func Root(repo *git.Repository) (root *object.Tree, err error) {
 	refName := plumbing.HEAD
 	ref, err := repo.Reference(refName, true)
 	if err != nil {