diff --git a/clients/git/client.go b/clients/git/client.go new file mode 100644 index 000000000000..3350cf0a8862 --- /dev/null +++ b/clients/git/client.go @@ -0,0 +1,208 @@ +// Copyright 2021 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// Package git defines helper functions for clients.RepoClient interface. +package git + +import ( + "errors" + "fmt" + "io" + "os" + "path/filepath" + "regexp" + "strings" + "sync" + + "github.com/go-git/go-git/v5" + "github.com/go-git/go-git/v5/plumbing" + cp "github.com/otiai10/copy" + + "github.com/ossf/scorecard/v4/clients" +) + +const repoDir = "repo*" + +var ( + errNilCommitFound = errors.New("nil commit found") + errEmptyQuery = errors.New("Query is empty") +) + +type Client struct { + gitRepo *git.Repository + worktree *git.Worktree + listCommits *sync.Once + tempDir string + errListCommits error + commits []clients.Commit + commitDepth int +} + +func (c *Client) InitRepo(uri, commitSHA string, commitDepth int) error { + // cleanup previous state, if any. + c.Close() + c.listCommits = new(sync.Once) + c.commits = nil + + // init + c.commitDepth = commitDepth + tempDir, err := os.MkdirTemp("", repoDir) + if err != nil { + return fmt.Errorf("os.MkdirTemp: %w", err) + } + + // git clone + const filePrefix = "file://" + if strings.HasPrefix(uri, filePrefix) { + if err := cp.Copy(strings.TrimPrefix(uri, filePrefix), tempDir); err != nil { + return fmt.Errorf("cp.Copy: %w", err) + } + c.gitRepo, err = git.PlainOpen(tempDir) + if err != nil { + return fmt.Errorf("git.PlainOpen: %w", err) + } + } else { + c.gitRepo, err = git.PlainClone(tempDir, false /*isBare*/, &git.CloneOptions{ + URL: uri, + Progress: os.Stdout, + }) + if err != nil { + return fmt.Errorf("git.PlainClone: %w", err) + } + } + c.tempDir = tempDir + c.worktree, err = c.gitRepo.Worktree() + if err != nil { + return fmt.Errorf("git.Worktree: %w", err) + } + + // git checkout + if commitSHA != clients.HeadSHA { + if err := c.worktree.Checkout(&git.CheckoutOptions{ + Hash: plumbing.NewHash(commitSHA), + Force: true, // throw away any unsaved changes. + }); err != nil { + return fmt.Errorf("git.Worktree: %w", err) + } + } + + return nil +} + +func (c *Client) ListCommits() ([]clients.Commit, error) { + c.listCommits.Do(func() { + commitIter, err := c.gitRepo.Log(&git.LogOptions{ + Order: git.LogOrderCommitterTime, + }) + if err != nil { + c.errListCommits = fmt.Errorf("git.CommitObjects: %w", err) + return + } + for i := 0; i < c.commitDepth; i++ { + commit, err := commitIter.Next() + if err != nil && !errors.Is(err, io.EOF) { + c.errListCommits = fmt.Errorf("commitIter.Next: %w", err) + return + } + // No more commits. + if errors.Is(err, io.EOF) { + break + } + + if commit == nil { + // Not sure in what case a nil commit is returned. Fail explicitly. + c.errListCommits = fmt.Errorf("%w", errNilCommitFound) + return + } + + c.commits = append(c.commits, clients.Commit{ + SHA: commit.Hash.String(), + Message: commit.Message, + CommittedDate: commit.Committer.When, + Committer: clients.User{ + Login: commit.Committer.Email, + }, + }) + } + }) + return c.commits, c.errListCommits +} + +func (c *Client) Search(request clients.SearchRequest) (clients.SearchResponse, error) { + // Pattern + if request.Query == "" { + return clients.SearchResponse{}, fmt.Errorf("%w", errEmptyQuery) + } + queryRegexp, err := regexp.Compile(request.Query) + if err != nil { + return clients.SearchResponse{}, fmt.Errorf("regexp.Compile: %w", err) + } + grepOpts := &git.GrepOptions{ + Patterns: []*regexp.Regexp{queryRegexp}, + } + + // path/filename + var pathExpr string + switch { + case request.Path != "" && request.Filename != "": + pathExpr = filepath.Join(fmt.Sprintf("^%s", request.Path), + fmt.Sprintf(".*%s", request.Filename)) + case request.Path != "": + pathExpr = fmt.Sprintf("^%s", request.Path) + case request.Filename != "": + pathExpr = filepath.Join(".*", request.Filename) + } + if pathExpr != "" { + pathRegexp, err := regexp.Compile(pathExpr) + if err != nil { + return clients.SearchResponse{}, fmt.Errorf("regexp.Compile: %w", err) + } + grepOpts.PathSpecs = append(grepOpts.PathSpecs, pathRegexp) + } + + // Grep + grepResults, err := c.worktree.Grep(grepOpts) + if err != nil { + return clients.SearchResponse{}, fmt.Errorf("git.Grep: %w", err) + } + + ret := clients.SearchResponse{} + for _, grepResult := range grepResults { + ret.Results = append(ret.Results, clients.SearchResult{ + Path: grepResult.FileName, + }) + } + ret.Hits = len(grepResults) + return ret, nil +} + +// TODO(#1709): Implement below fns using go-git. +func (c *Client) SearchCommits(request clients.SearchCommitsOptions) ([]clients.Commit, error) { + return nil, nil +} + +func (c *Client) ListFiles(predicate func(string) (bool, error)) ([]string, error) { + return nil, nil +} + +func (c *Client) GetFileContent(filename string) ([]byte, error) { + return nil, nil +} + +func (c *Client) Close() error { + if err := os.RemoveAll(c.tempDir); err != nil && !os.IsNotExist(err) { + return fmt.Errorf("os.RemoveAll: %w", err) + } + return nil +} diff --git a/clients/git/coverage.out b/clients/git/coverage.out new file mode 100644 index 000000000000..07ff9238bdac --- /dev/null +++ b/clients/git/coverage.out @@ -0,0 +1,51 @@ +mode: set +github.com/ossf/scorecard/v4/clients/git/client.go:52.73,61.16 6 1 +github.com/ossf/scorecard/v4/clients/git/client.go:61.16,63.3 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:66.2,67.40 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:67.40,68.79 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:68.79,70.4 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:71.3,72.17 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:72.17,74.4 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:75.8,80.17 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:80.17,82.4 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:84.2,86.16 3 1 +github.com/ossf/scorecard/v4/clients/git/client.go:86.16,88.3 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:91.2,91.34 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:91.34,95.18 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:95.18,97.4 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:100.2,100.12 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:103.58,104.26 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:104.26,108.17 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:108.17,111.4 2 0 +github.com/ossf/scorecard/v4/clients/git/client.go:112.3,112.38 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:112.38,114.45 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:114.45,117.5 2 0 +github.com/ossf/scorecard/v4/clients/git/client.go:119.4,119.30 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:119.30,120.10 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:123.4,123.21 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:123.21,127.5 2 0 +github.com/ossf/scorecard/v4/clients/git/client.go:129.4,136.6 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:139.2,139.36 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:142.88,144.25 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:144.25,146.3 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:147.2,148.16 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:148.16,150.3 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:151.2,157.9 3 1 +github.com/ossf/scorecard/v4/clients/git/client.go:158.52,160.42 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:161.26,162.46 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:163.30,164.51 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:166.2,166.20 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:166.20,168.17 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:168.17,170.4 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:171.3,171.62 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:175.2,176.16 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:176.16,178.3 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:180.2,181.41 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:181.41,185.3 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:186.2,187.17 2 1 +github.com/ossf/scorecard/v4/clients/git/client.go:191.96,193.2 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:195.84,197.2 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:199.66,201.2 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:203.32,204.71 1 1 +github.com/ossf/scorecard/v4/clients/git/client.go:204.71,206.3 1 0 +github.com/ossf/scorecard/v4/clients/git/client.go:207.2,207.12 1 1 diff --git a/clients/git/e2e_test.go b/clients/git/e2e_test.go new file mode 100644 index 000000000000..0193bde71453 --- /dev/null +++ b/clients/git/e2e_test.go @@ -0,0 +1,155 @@ +// Copyright 2021 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package git + +import ( + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" + + "github.com/ossf/scorecard/v4/clients" +) + +var _ = DescribeTable("Test ListCommits commit-depth for HEAD", + func(uri string) { + const commitSHA = clients.HeadSHA + const commitDepth = 1 + client := &Client{} + Expect(client.InitRepo(uri, commitSHA, commitDepth)).To(BeNil()) + commits, err := client.ListCommits() + Expect(err).To(BeNil()) + Expect(len(commits)).Should(BeEquivalentTo(commitDepth)) + Expect(client.Close()).To(BeNil()) + }, + Entry("GitHub", "https://github.com/ossf/scorecard"), + Entry("Local", "file://./"), + Entry("GitLab", "https://gitlab.haskell.org/haskell/filepath"), +) + +var _ = DescribeTable("Test ListCommits commit-depth and latest commit at [0]", + func(uri, commitSHA string) { + const commitDepth = 10 + client := &Client{} + Expect(client.InitRepo(uri, commitSHA, commitDepth)).To(BeNil()) + commits, err := client.ListCommits() + Expect(err).To(BeNil()) + Expect(len(commits)).Should(BeEquivalentTo(commitDepth)) + Expect(commits[0].SHA).Should(BeEquivalentTo(commitSHA)) + Expect(client.Close()).To(BeNil()) + }, + Entry("GitHub", "https://github.com/ossf/scorecard", "c06ac740cc49fea404c54c036000731d5ea6ebe3"), + Entry("Local", "file://./", "c06ac740cc49fea404c54c036000731d5ea6ebe3"), + Entry("GitLab", "https://gitlab.haskell.org/haskell/filepath", "98f8bba9eac8c7183143d290d319be7df76c258b"), +) + +var _ = DescribeTable("Test ListCommits without enough commits", + func(uri string) { + const commitSHA = "dc1835b7ffe526969d65436b621e171e3386771e" + const commitDepth = 10 + client := &Client{} + Expect(client.InitRepo(uri, commitSHA, commitDepth)).To(BeNil()) + commits, err := client.ListCommits() + Expect(err).To(BeNil()) + Expect(len(commits)).Should(BeEquivalentTo(3)) + Expect(commits[0].SHA).Should(BeEquivalentTo(commitSHA)) + Expect(client.Close()).To(BeNil()) + }, + Entry("GitHub", "https://github.com/ossf/scorecard"), + Entry("Local", "file://./"), + // TODO(#1709): Add equivalent test for GitLab. +) + +var _ = DescribeTable("Test Search across a repo", + func(uri string) { + const ( + commitSHA = "c06ac740cc49fea404c54c036000731d5ea6ebe3" + commitDepth = 10 + ) + client := &Client{} + Expect(client.InitRepo(uri, commitSHA, commitDepth)).To(BeNil()) + resp, err := client.Search(clients.SearchRequest{ + Query: "github/codeql-action/analyze", + }) + Expect(err).To(BeNil()) + Expect(resp.Hits).Should(BeNumerically(">=", 1)) + Expect(client.Close()).To(BeNil()) + }, + Entry("GitHub", "https://github.com/ossf/scorecard"), + Entry("Local", "file://./"), + // TODO(#1709): Add equivalent test for GitLab. +) + +var _ = DescribeTable("Test Search within a path", + func(uri string) { + const ( + commitSHA = "c06ac740cc49fea404c54c036000731d5ea6ebe3" + commitDepth = 10 + ) + client := &Client{} + Expect(client.InitRepo(uri, commitSHA, commitDepth)).To(BeNil()) + resp, err := client.Search(clients.SearchRequest{ + Query: "github/codeql-action/analyze", + Path: ".github/workflows", + }) + Expect(err).To(BeNil()) + Expect(resp.Hits).Should(BeEquivalentTo(1)) + Expect(client.Close()).To(BeNil()) + }, + Entry("GitHub", "https://github.com/ossf/scorecard"), + Entry("Local", "file://./"), + // TODO(#1709): Add equivalent test for GitLab. +) + +var _ = DescribeTable("Test Search within a filename", + func(uri string) { + const ( + commitSHA = "c06ac740cc49fea404c54c036000731d5ea6ebe3" + commitDepth = 10 + ) + client := &Client{} + Expect(client.InitRepo(uri, commitSHA, commitDepth)).To(BeNil()) + resp, err := client.Search(clients.SearchRequest{ + Query: "github/codeql-action/analyze", + Filename: "codeql-analysis.yml", + }) + Expect(err).To(BeNil()) + Expect(resp.Hits).Should(BeEquivalentTo(1)) + Expect(client.Close()).To(BeNil()) + }, + Entry("GitHub", "https://github.com/ossf/scorecard"), + Entry("Local", "file://./"), + // TODO(#1709): Add equivalent test for GitLab. +) + +var _ = DescribeTable("Test Search within path and filename", + func(uri string) { + const ( + commitSHA = "c06ac740cc49fea404c54c036000731d5ea6ebe3" + commitDepth = 10 + ) + client := &Client{} + Expect(client.InitRepo(uri, commitSHA, commitDepth)).To(BeNil()) + resp, err := client.Search(clients.SearchRequest{ + Query: "github/codeql-action/analyze", + Path: ".github/workflows", + Filename: "codeql-analysis.yml", + }) + Expect(err).To(BeNil()) + Expect(resp.Hits).Should(BeEquivalentTo(1)) + Expect(client.Close()).To(BeNil()) + }, + Entry("GitHub", "https://github.com/ossf/scorecard"), + Entry("Local", "file://./"), + // TODO(#1709): Add equivalent test for GitLab. +) diff --git a/clients/git/gitrepo_suite_test.go b/clients/git/gitrepo_suite_test.go new file mode 100644 index 000000000000..71979819ef4e --- /dev/null +++ b/clients/git/gitrepo_suite_test.go @@ -0,0 +1,39 @@ +// Copyright 2021 OpenSSF Scorecard Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package git + +import ( + "os" + "testing" + + . "github.com/onsi/ginkgo/v2" + . "github.com/onsi/gomega" +) + +func TestGitRepo(t *testing.T) { + // TODO(#1709): GitHub tests are taking >10m to run slowing down CI/CD. + // Need to fix that before re-enabling. + // TODO(#1709): Local tests require fake Git repo to be available in CI/CD + // environment. + if val, exists := os.LookupEnv("RUN_GIT_E2E"); !exists || val == "0" { + t.Skip() + } + if val, exists := os.LookupEnv("SKIP_GINKGO"); exists && val == "1" { + t.Skip() + } + t.Parallel() + RegisterFailHandler(Fail) + RunSpecs(t, "GitRepo Suite") +} diff --git a/go.mod b/go.mod index 8f41152096a0..656c4f13fb8a 100644 --- a/go.mod +++ b/go.mod @@ -24,9 +24,9 @@ require ( github.com/grafeas/kritis v0.2.3-0.20210120183821-faeba81c520c github.com/h2non/filetype v1.1.3 github.com/jszwec/csvutil v1.8.0 - github.com/moby/buildkit v0.10.3 + github.com/moby/buildkit v0.11.4 github.com/olekukonko/tablewriter v0.0.5 - github.com/onsi/gomega v1.24.2 + github.com/onsi/gomega v1.27.0 github.com/shurcooL/githubv4 v0.0.0-20201206200315-234843c633fa github.com/shurcooL/graphql v0.0.0-20200928012149-18c5c3165e3a // indirect github.com/sirupsen/logrus v1.9.0 @@ -35,7 +35,7 @@ require ( go.opencensus.io v0.24.0 gocloud.dev v0.26.0 golang.org/x/text v0.7.0 - golang.org/x/tools v0.5.1-0.20230117180257-8aba49bb5ea2 + golang.org/x/tools v0.6.0 google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 google.golang.org/protobuf v1.28.1 gopkg.in/yaml.v2 v2.4.0 @@ -49,7 +49,8 @@ require ( github.com/gobwas/glob v0.2.3 github.com/google/osv-scanner v1.2.1-0.20230302232134-592acbc2539b github.com/mcuadros/go-jsonschema-generator v0.0.0-20200330054847-ba7a369d4303 - github.com/onsi/ginkgo/v2 v2.7.0 + github.com/onsi/ginkgo/v2 v2.8.3 + github.com/otiai10/copy v1.9.0 sigs.k8s.io/release-utils v0.6.0 ) @@ -67,17 +68,19 @@ require ( github.com/CycloneDX/cyclonedx-go v0.7.0 // indirect github.com/cloudflare/circl v1.1.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b // indirect github.com/google/gofuzz v1.1.0 // indirect + github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect github.com/googleapis/gnostic v0.4.1 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-retryablehttp v0.7.1 // indirect - github.com/hashicorp/golang-lru v0.5.3 // indirect + github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/jedib0t/go-pretty/v6 v6.4.4 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/package-url/packageurl-go v0.1.0 // indirect + github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 // indirect github.com/pjbgf/sha1cd v0.2.3 // indirect github.com/skeema/knownhosts v1.1.0 // indirect github.com/spdx/gordf v0.0.0-20221230105357-b735bd5aac89 // indirect @@ -107,18 +110,18 @@ require ( github.com/aws/aws-sdk-go v1.43.31 // indirect github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect - github.com/containerd/stargz-snapshotter/estargz v0.12.1 // indirect + github.com/containerd/stargz-snapshotter/estargz v0.13.0 // indirect github.com/containerd/typeurl v1.0.2 // indirect - github.com/docker/cli v20.10.20+incompatible // indirect + github.com/docker/cli v23.0.0-rc.1+incompatible // indirect github.com/docker/distribution v2.8.1+incompatible // indirect - github.com/docker/docker v20.10.20+incompatible // indirect + github.com/docker/docker v23.0.0-rc.1+incompatible // indirect github.com/docker/docker-credential-helpers v0.7.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect github.com/fatih/color v1.13.0 // indirect github.com/go-git/gcfg v1.5.0 // indirect github.com/go-git/go-billy/v5 v5.4.1 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v4 v4.4.1 // indirect + github.com/golang-jwt/jwt/v4 v4.4.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.2 // indirect github.com/google/go-github/v45 v45.2.0 // indirect @@ -132,7 +135,7 @@ require ( github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/klauspost/compress v1.15.11 // indirect + github.com/klauspost/compress v1.15.12 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.13 // indirect diff --git a/go.sum b/go.sum index 47d2697bb886..2e59f7bb0713 100644 --- a/go.sum +++ b/go.sum @@ -199,43 +199,44 @@ github.com/aws/aws-sdk-go v1.31.6/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU github.com/aws/aws-sdk-go v1.37.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= github.com/aws/aws-sdk-go v1.43.31 h1:yJZIr8nMV1hXjAvvOLUFqZRJcHV7udPQBfhJqawDzI0= github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go-v2 v1.16.2 h1:fqlCk6Iy3bnCumtrLz9r3mJ/2gUT0pJ0wLFVIdWh+JA= github.com/aws/aws-sdk-go-v2 v1.16.2/go.mod h1:ytwTPBG6fXTZLxxeeCCWj2/EMYp/xDUgX+OET6TLNNU= +github.com/aws/aws-sdk-go-v2 v1.16.3 h1:0W1TSJ7O6OzwuEvIXAtJGvOeQ0SGAhcpxPN2/NK5EhM= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1 h1:SdK4Ppk5IzLs64ZMvr6MrSficMtjY2oS0WOORXTlxwU= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.1/go.mod h1:n8Bs1ElDD2wJ9kCRTczA83gYbBmjSwZp3umc6zF4EeM= -github.com/aws/aws-sdk-go-v2/config v1.15.3 h1:5AlQD0jhVXlGzwo+VORKiUuogkG7pQcLJNzIzK7eodw= github.com/aws/aws-sdk-go-v2/config v1.15.3/go.mod h1:9YL3v07Xc/ohTsxFXzan9ZpFpdTOFl4X65BAKYaz8jg= -github.com/aws/aws-sdk-go-v2/credentials v1.11.2 h1:RQQ5fzclAKJyY5TvF+fkjJEwzK4hnxQCLOu5JXzDmQo= +github.com/aws/aws-sdk-go-v2/config v1.15.5 h1:P+xwhr6kabhxDTXTVH9YoHkqjLJ0wVVpIUHtFNr2hjU= github.com/aws/aws-sdk-go-v2/credentials v1.11.2/go.mod h1:j8YsY9TXTm31k4eFhspiQicfXPLZ0gYXA50i4gxPE8g= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.3 h1:LWPg5zjHV9oz/myQr4wMs0gi4CjnDN/ILmyZUFYXZsU= +github.com/aws/aws-sdk-go-v2/credentials v1.12.0 h1:4R/NqlcRFSkR0wxOhgHi+agGpbEr5qMCjn7VqUIJY+E= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.3/go.mod h1:uk1vhHHERfSVCUnqSqz8O48LBYDSC+k6brng09jcMOk= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.3 h1:ir7iEq78s4txFGgwcLqD6q9IIPzTQNRJXulJd9h/zQo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.4 h1:FP8gquGeGHHdfY6G5llaMQDF+HAf20VKc8opRwmjf04= github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.3/go.mod h1:0dHuD2HZZSiwfJSy1FO5bX1hQ1TxVV1QXXjpn3XUE44= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.9 h1:onz/VaaxZ7Z4V+WIN9Txly9XLTmoOh1oJ8XcAC3pako= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.10 h1:JL7cY85hyjlgfA29MMyAlItX+JYIH9XsxgMBS7jtlqA= github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.9/go.mod h1:AnVH5pvai0pAF4lXRq0bmhbes1u9R8wTE+g+183bZNM= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.3 h1:9stUQR/u2KXU6HkFJYlqnZEjBnbgrVbG6I5HN09xZh0= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.10 h1:uFWgo6mGJI1n17nbcvSc6fxVuR3xLNqvXt12JCnEcT8= github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.3/go.mod h1:ssOhaLpRlh88H3UmEcsBoVKq309quMvm3Ds8e9d4eJM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.10 h1:by9P+oy3P/CwggN4ClnW2D4oL91QV7pBzBICi1chZvQ= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.4 h1:cnsvEKSoHN4oAN7spMMr0zhEW2MHnhAVpmqQg8E6UcM= github.com/aws/aws-sdk-go-v2/internal/ini v1.3.10/go.mod h1:8DcYQcz0+ZJaSxANlHIsbbi6S+zMwjwdDqwW3r9AzaE= +github.com/aws/aws-sdk-go-v2/internal/ini v1.3.11 h1:6cZRymlLEIlDTEB0+5+An6Zj1CKt6rSE69tOmFeu1nk= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.1 h1:C21IDZCm9Yu5xqjb3fKmxDoYvJXtw1DNlOmLZEIlY1M= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1 h1:T4pFel53bkHjL2mMo+4DKE6r6AuoZnM0fg7k1/ratr4= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.1/go.mod h1:GeUru+8VzrTXV/83XyMJ80KpH8xO89VPoUileyNQ+tc= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.3 h1:I0dcwWitE752hVSMrsLCxqNQ+UdEp3nACx2bYNMQq+k= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.3/go.mod h1:Seb8KNmD6kVTjwRjVEgOT5hPin6sq+v4C2ycJQDwuH8= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.3 h1:Gh1Gpyh01Yvn7ilO/b/hr01WgNpaszfbKMUgqM186xQ= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.5 h1:9LSZqt4v1JiehyZTrQnRFf2mY/awmyYNNY/b7zqtduU= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.3/go.mod h1:wlY6SVjuwvh3TVRpTqdy4I1JpBFLX4UGeKZdWntaocw= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.3 h1:BKjwCJPnANbkwQ8vzSbaZDKawwagDubrH/z/c0X+kbQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.4 h1:b16QW0XWl0jWjLABFc1A+uh145Oqv+xDcObNk0iQgUk= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.3/go.mod h1:Bm/v2IaN6rZ+Op7zX+bOUMdL4fsrYZiD0dsjLhNKwZc= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.4 h1:RE/DlZLYrz1OOmq8F28IXHLksuuvlpzUbvJ+SESCZBI= github.com/aws/aws-sdk-go-v2/service/kms v1.16.3/go.mod h1:QuiHPBqlOFCi4LqdSskYYAWpQlx3PKmohy+rE2F+o5g= -github.com/aws/aws-sdk-go-v2/service/s3 v1.26.3 h1:rMPtwA7zzkSQZhhz9U3/SoIDz/NZ7Q+iRn4EIO8rSyU= github.com/aws/aws-sdk-go-v2/service/s3 v1.26.3/go.mod h1:g1qvDuRsJY+XghsV6zg00Z4KJ7DtFFCx8fJD2a491Ak= +github.com/aws/aws-sdk-go-v2/service/s3 v1.26.9 h1:LCQKnopq2t4oQS3VKivlYTzAHCTJZZoQICM9fny7KHY= github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.4/go.mod h1:PJc8s+lxyU8rrre0/4a0pn2wgwiDvOEzoOjcJUBr67o= github.com/aws/aws-sdk-go-v2/service/sns v1.17.4/go.mod h1:kElt+uCcXxcqFyc+bQqZPFD9DME/eC6oHBXvFzQ9Bcw= github.com/aws/aws-sdk-go-v2/service/sqs v1.18.3/go.mod h1:skmQo0UPvsjsuYYSYMVmrPc1HWCbHUJyrCEp+ZaLzqM= github.com/aws/aws-sdk-go-v2/service/ssm v1.24.1/go.mod h1:NR/xoKjdbRJ+qx0pMR4mI+N/H1I1ynHwXnO6FowXJc0= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.3 h1:frW4ikGcxfAEDfmQqWgMLp+F1n4nRo9sF39OcIb5BkQ= github.com/aws/aws-sdk-go-v2/service/sso v1.11.3/go.mod h1:7UQ/e69kU7LDPtY40OyoHYgRmgfGM4mgsLYtcObdveU= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.3 h1:cJGRyzCSVwZC7zZZ1xbx9m32UnrKydRYhOvcD1NYP9Q= +github.com/aws/aws-sdk-go-v2/service/sso v1.11.4 h1:Uw5wBybFQ1UeA9ts0Y07gbv0ncZnIAyw858tDW0NP2o= github.com/aws/aws-sdk-go-v2/service/sts v1.16.3/go.mod h1:bfBj0iVmsUyUg4weDB4NxktD9rDGeKSVWnjTnwbx9b8= +github.com/aws/aws-sdk-go-v2/service/sts v1.16.4 h1:+xtV90n3abQmgzk1pS++FdxZTrPEDgQng6e4/56WR2A= github.com/aws/smithy-go v1.11.2 h1:eG/N+CcUMAvsdffgMvjMKwfyDzIkjM6pfxMJ8Mzc6mE= github.com/aws/smithy-go v1.11.2/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -277,8 +278,8 @@ github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:z github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/stargz-snapshotter/estargz v0.12.1 h1:+7nYmHJb0tEkcRaAW+MHqoKaJYZmkikupxCqVtmPuY0= -github.com/containerd/stargz-snapshotter/estargz v0.12.1/go.mod h1:12VUuCq3qPq4y8yUW+l5w3+oXV3cx2Po3KSe/SmPGqw= +github.com/containerd/stargz-snapshotter/estargz v0.13.0 h1:fD7AwuVV+B40p0d9qVkH/Au1qhp8hn/HWJHIYjpEcfw= +github.com/containerd/stargz-snapshotter/estargz v0.13.0/go.mod h1:m+9VaGJGlhCnrcEUod8mYumTmRgblwd3rC5UCEh2Yp0= github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= @@ -312,14 +313,14 @@ github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/ github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= github.com/docker/cli v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/cli v20.10.20+incompatible h1:lWQbHSHUFs7KraSN2jOJK7zbMS2jNCHI4mt4xUFUVQ4= -github.com/docker/cli v20.10.20+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/cli v23.0.0-rc.1+incompatible h1:Vl3pcUK4/LFAD56Ys3BrqgAtuwpWd/IO3amuSL0ZbP0= +github.com/docker/cli v23.0.0-rc.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/distribution v2.8.0+incompatible h1:l9EaZDICImO1ngI+uTifW+ZYvvz7fKISBAKpg+MbWbY= github.com/docker/distribution v2.8.0+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.20+incompatible h1:kH9tx6XO+359d+iAkumyKDc5Q1kOwPuAUaeri48nD6E= -github.com/docker/docker v20.10.20+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v23.0.0-rc.1+incompatible h1:Dmn88McWuHc7BSNN1s6RtfhMmt6ZPQAYUEf7FhqpiQI= +github.com/docker/docker v23.0.0-rc.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A= github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0= @@ -405,6 +406,8 @@ github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= @@ -420,8 +423,9 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= -github.com/golang-jwt/jwt/v4 v4.4.1 h1:pC5DB52sCeK48Wlb9oPcdhnjkz1TKt1D/P7WKJ0kUcQ= github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.4.2 h1:rcc4lwaZgFMCZ5jxF9ABolDcIHdBytAFgqFPbSJQAYs= +github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.0.0-20170517235910-f1bb20e5a188/go.mod h1:vXjM/+wXQnTPR4KqTKDgJukSZ6amVRtWMPEjE6sQoK8= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= @@ -523,6 +527,7 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210506205249-923b5ab0fc1a/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= @@ -589,8 +594,9 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.3 h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk= github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= @@ -681,8 +687,8 @@ github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.11 h1:Lcadnb3RKGin4FYM/orgq0qde+nc15E5Cbqg4B9Sx9c= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.15.12 h1:YClS/PImqYbn+UILDnqxQCZ3RehC9N318SU3kElDUEM= +github.com/klauspost/compress v1.15.12/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -747,8 +753,8 @@ github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:F github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/moby/buildkit v0.10.3 h1:/dGykD8FW+H4p++q5+KqKEo6gAkYKyBQHdawdjVwVAU= -github.com/moby/buildkit v0.10.3/go.mod h1:jxeOuly98l9gWHai0Ojrbnczrk/rf+o9/JqNhY+UCSo= +github.com/moby/buildkit v0.11.4 h1:mleVHr+n7HUD65QNUkgkT3d8muTzhYUoHE9FM3Ej05s= +github.com/moby/buildkit v0.11.4/go.mod h1:P5Qi041LvCfhkfYBHry+Rwoo3Wi6H971J2ggE+PcIoo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -776,8 +782,8 @@ github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo/v2 v2.7.0 h1:/XxtEV3I3Eif/HobnVx9YmJgk8ENdRsuUmM+fLCFNow= -github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= +github.com/onsi/ginkgo/v2 v2.8.3 h1:RpbK1G8nWPNaCVFBWsOGnEQQGgASi6b8fxcWBvDYjxQ= +github.com/onsi/ginkgo/v2 v2.8.3/go.mod h1:6OaUA8BCi0aZfmzYT/q9AacwTzDpNbxILUT+TlBq6MY= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= @@ -785,15 +791,22 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.24.2 h1:J/tulyYK6JwBldPViHJReihxxZ+22FHs0piGjQAvoUE= -github.com/onsi/gomega v1.24.2/go.mod h1:gs3J10IS7Z7r7eXRoNJIrNqU4ToQukCJhFtKrWgHWnk= +github.com/onsi/gomega v1.27.0 h1:QLidEla4bXUuZVFa4KX6JHCsuGgbi85LC/pCHrt/O08= +github.com/onsi/gomega v1.27.0/go.mod h1:i189pavgK95OSIipFBa74gC2V4qrQuvjuyGEr3GmbXA= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/package-url/packageurl-go v0.1.0 h1:efWBc98O/dBZRg1pw2xiDzovnlMjCa9NPnfaiBduh8I= -github.com/package-url/packageurl-go v0.1.0/go.mod h1:C/ApiuWpmbpni4DIOECf6WCjFUZV7O1Fx7VAzrZHgBw= +github.com/otiai10/copy v1.9.0 h1:7KFNiCgZ91Ru4qW4CWPf/7jqtxLagGRmIxWldPP9VY4= +github.com/otiai10/copy v1.9.0/go.mod h1:hsfX19wcn0UWIHUQ3/4fHuehhk2UyArQ9dVFAn3FczI= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.4.0 h1:umwcf7gbpEwf7WFzqmWwSv0CzbeMsae2u9ZvpP8j2q4= +github.com/otiai10/mint v1.4.0/go.mod h1:gifjb2MYOoULtKLqUAEILUG/9KONW6f7YsJ6vQLTlFI= +github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170 h1:DiLBVp4DAcZlBVBEtJpNWZpZVq0AEeCY7Hqk8URVs4o= +github.com/package-url/packageurl-go v0.1.1-0.20220428063043-89078438f170/go.mod h1:uQd4a7Rh3ZsVg5j0lNyAfyxIeGde9yrlhjF78GzeW0c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= @@ -1344,8 +1357,8 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.5.1-0.20230117180257-8aba49bb5ea2 h1:v0FhRDmSCNH/0EurAT6T8KRY4aNuUhz6/WwBMxG+gvQ= -golang.org/x/tools v0.5.1-0.20230117180257-8aba49bb5ea2/go.mod h1:N+Kgy78s5I24c24dU8OfWNEotWjutIs8SnJvn5IDq+k= +golang.org/x/tools v0.6.0 h1:BOw41kyTf3PuCW1pVQf8+Cyg8pMlkYB1oo9iJ6D/lKM= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/vuln v0.0.0-20230118164824-4ec8867cc0e6 h1:XZD8apnMaMVuqE3ZEzf5JJncKMlOsMnnov7U+JRT/d4= golang.org/x/vuln v0.0.0-20230118164824-4ec8867cc0e6/go.mod h1:cBP4HMKv0X+x96j8IJWCKk0eqpakBmmHjKGSSC0NaYE= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=