internal/worker: move repo logic to repo.go
Logic for clonining and reading from a repository is moved to a separate
file.
Pure code in motion.
Change-Id: Ia41dd8a3b2620e62da773ea0e7c07b38b980d847
Reviewed-on: https://go-review.googlesource.com/c/vuln/+/362235
Trust: Julie Qiu <julie@golang.org>
Run-TryBot: Julie Qiu <julie@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/internal/worker/repo.go b/internal/worker/repo.go
new file mode 100644
index 0000000..50f84fc
--- /dev/null
+++ b/internal/worker/repo.go
@@ -0,0 +1,58 @@
+// 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.
+
+package worker
+
+import (
+ "log"
+
+ "github.com/go-git/go-git/v5"
+ "github.com/go-git/go-git/v5/plumbing"
+ "github.com/go-git/go-git/v5/plumbing/object"
+ "github.com/go-git/go-git/v5/storage/memory"
+ "golang.org/x/vuln/internal/derrors"
+)
+
+const cvelistRepoURL = "https://github.com/CVEProject/cvelist"
+
+// cloneRepo returns a repo and tree object for the repo at HEAD by
+// cloning the repo at repoURL.
+func cloneRepo(repoURL string) (repo *git.Repository, err error) {
+ defer derrors.Wrap(&err, "cloneRepo(%q)", repoURL)
+ log.Printf("Cloning %q...", cvelistRepoURL)
+ return git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
+ URL: repoURL,
+ ReferenceName: plumbing.HEAD,
+ SingleBranch: true,
+ Depth: 1,
+ Tags: git.NoTags,
+ })
+}
+
+func openRepo(dirpath string) (repo *git.Repository, err error) {
+ defer derrors.Wrap(&err, "openRepo(%q)", dirpath)
+ log.Printf("Opening %q...", dirpath)
+ repo, err = git.PlainOpen(dirpath)
+ if err != nil {
+ return nil, err
+ }
+ return repo, nil
+}
+
+func getRepoRoot(repo *git.Repository) (root *object.Tree, err error) {
+ refName := plumbing.HEAD
+ ref, err := repo.Reference(refName, true)
+ if err != nil {
+ return nil, err
+ }
+ commit, err := repo.CommitObject(ref.Hash())
+ if err != nil {
+ return nil, err
+ }
+ root, err = repo.TreeObject(commit.TreeHash)
+ if err != nil {
+ return nil, err
+ }
+ return root, nil
+}
diff --git a/internal/worker/worker.go b/internal/worker/worker.go
index dd75557..1c7957a 100644
--- a/internal/worker/worker.go
+++ b/internal/worker/worker.go
@@ -16,10 +16,8 @@
"strings"
"github.com/go-git/go-git/v5"
- "github.com/go-git/go-git/v5/plumbing"
"github.com/go-git/go-git/v5/plumbing/filemode"
"github.com/go-git/go-git/v5/plumbing/object"
- "github.com/go-git/go-git/v5/storage/memory"
"golang.org/x/vuln/internal/cveschema"
"golang.org/x/vuln/internal/derrors"
"golang.org/x/vuln/internal/report"
@@ -48,49 +46,6 @@
return nil
}
-const cvelistRepoURL = "https://github.com/CVEProject/cvelist"
-
-// cloneRepo returns a repo and tree object for the repo at HEAD by
-// cloning the repo at repoURL.
-func cloneRepo(repoURL string) (repo *git.Repository, err error) {
- defer derrors.Wrap(&err, "cloneRepo(%q)", repoURL)
- log.Printf("Cloning %q...", cvelistRepoURL)
- return git.Clone(memory.NewStorage(), nil, &git.CloneOptions{
- URL: repoURL,
- ReferenceName: plumbing.HEAD,
- SingleBranch: true,
- Depth: 1,
- Tags: git.NoTags,
- })
-}
-
-func openRepo(dirpath string) (repo *git.Repository, err error) {
- defer derrors.Wrap(&err, "openRepo(%q)", dirpath)
- log.Printf("Opening %q...", dirpath)
- repo, err = git.PlainOpen(dirpath)
- if err != nil {
- return nil, err
- }
- return repo, nil
-}
-
-func getRepoRoot(repo *git.Repository) (root *object.Tree, err error) {
- refName := plumbing.HEAD
- ref, err := repo.Reference(refName, true)
- if err != nil {
- return nil, err
- }
- commit, err := repo.CommitObject(ref.Hash())
- if err != nil {
- return nil, err
- }
- root, err = repo.TreeObject(commit.TreeHash)
- if err != nil {
- return nil, err
- }
- return root, nil
-}
-
// createIssuesToTriage creates GitHub issues to be triaged by the Go security
// team.
// TODO: Create GitHub issues. At the moment, this just prints the number of