Skip to content

Commit

Permalink
Fix technology naming (#146)
Browse files Browse the repository at this point in the history
  • Loading branch information
omerzi authored Sep 14, 2022
1 parent a8fbf4b commit 52a8b12
Show file tree
Hide file tree
Showing 13 changed files with 160 additions and 43 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
steps:
- name: Unlabel 'safe to test'
uses: actions-ecosystem/action-remove-labels@v1
if: ${{github.event_name != 'push' }}
if: ${{github.event_name != 'push' }} && runner.os == 'Linux'
with:
labels: 'safe to test'

Expand Down
26 changes: 12 additions & 14 deletions commands/createfixpullrequests.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ func (cfp *CreateFixPullRequestsCmd) createFixVersionsMap(params *utils.FrogbotP
fixVersionInfo.UpdateFixVersion(vulnFixVersion)
} else {
// First appearance of a version that fixes the current impacted package
fixVersionsMap[vulnerability.ImpactedPackageName] = NewFixVersionInfo(vulnFixVersion, PackageType(vulnerability.ImpactedPackageType))
fixVersionsMap[vulnerability.ImpactedPackageName] = NewFixVersionInfo(vulnFixVersion, vulnerability.Technology)
}
}
}
Expand All @@ -163,7 +163,7 @@ func (cfp *CreateFixPullRequestsCmd) createFixVersionsMap(params *utils.FrogbotP

func (cfp *CreateFixPullRequestsCmd) shouldFixVulnerability(params *utils.FrogbotParams, vulnerability formats.VulnerabilityOrViolationRow) (bool, error) {
// In Maven, fix only direct dependencies
if vulnerability.ImpactedPackageType == "Maven" {
if vulnerability.Technology == coreutils.Maven {
if cfp.mavenDepToPropertyMap == nil {
cfp.mavenDepToPropertyMap = make(map[string][]string)
err := utils.GetVersionProperties(params.WorkingDirectory, cfp.mavenDepToPropertyMap)
Expand Down Expand Up @@ -229,25 +229,25 @@ func (cfp *CreateFixPullRequestsCmd) fixSinglePackageAndCreatePR(impactedPackage
return
}

func (cfp *CreateFixPullRequestsCmd) updatePackageToFixedVersion(packageType PackageType, impactedPackage, fixVersion, requirementsFile string) error {
func (cfp *CreateFixPullRequestsCmd) updatePackageToFixedVersion(packageType coreutils.Technology, impactedPackage, fixVersion, requirementsFile string) error {
var err error
switch packageType {
case coreutils.Go, "Go":
case coreutils.Go:
commandArgs := []string{"get"}
err = fixPackageVersionGeneric(commandArgs, coreutils.Go, impactedPackage, fixVersion, "@v")
err = fixPackageVersionGeneric(commandArgs, coreutils.Go.GetExecCommandName(), impactedPackage, fixVersion, "@v")
case coreutils.Npm:
commandArgs := []string{"install"}
err = fixPackageVersionGeneric(commandArgs, coreutils.Npm, impactedPackage, fixVersion, "@")
err = fixPackageVersionGeneric(commandArgs, coreutils.Npm.GetExecCommandName(), impactedPackage, fixVersion, "@")
case coreutils.Maven:
err = fixPackageVersionMaven(cfp, impactedPackage, fixVersion)
case coreutils.Yarn:
commandArgs := []string{"up"}
err = fixPackageVersionGeneric(commandArgs, strings.ToLower(coreutils.Yarn), impactedPackage, fixVersion, "@")
err = fixPackageVersionGeneric(commandArgs, coreutils.Yarn.GetExecCommandName(), impactedPackage, fixVersion, "@")
case coreutils.Pip:
err = fixPackageVersionPip(impactedPackage, fixVersion, requirementsFile)
case coreutils.Pipenv:
commandArgs := []string{"install"}
err = fixPackageVersionGeneric(commandArgs, coreutils.Pipenv, impactedPackage, fixVersion, "==")
err = fixPackageVersionGeneric(commandArgs, coreutils.Pipenv.GetExecCommandName(), impactedPackage, fixVersion, "==")
default:
return fmt.Errorf("package type: %s is currently not supported", string(packageType))
}
Expand Down Expand Up @@ -278,7 +278,7 @@ func fixPackageVersionGeneric(commandArgs []string, commandName, impactedPackage
func fixPackageVersionMaven(cfp *CreateFixPullRequestsCmd, impactedPackage, fixVersion string) error {
properties := cfp.mavenDepToPropertyMap[impactedPackage]
// Update the package version. This command updates it only if the version is not a reference to a property.
updateVersionArgs := []string{"versions:use-dep-version", "-Dincludes=" + impactedPackage, "-DdepVersion=" + fixVersion, "-DgenerateBackupPoms=false"}
updateVersionArgs := []string{"-B", "versions:use-dep-version", "-Dincludes=" + impactedPackage, "-DdepVersion=" + fixVersion, "-DgenerateBackupPoms=false"}
updateVersionCmd := fmt.Sprintf("mvn %s", strings.Join(updateVersionArgs, " "))
clientLog.Debug(fmt.Sprintf("Running '%s'", updateVersionCmd))
updateVersionOutput, err := exec.Command("mvn", updateVersionArgs...).CombinedOutput() // #nosec G204
Expand All @@ -288,7 +288,7 @@ func fixPackageVersionMaven(cfp *CreateFixPullRequestsCmd, impactedPackage, fixV

// Update properties that represent this package's version.
for _, property := range properties {
updatePropertyArgs := []string{"versions:set-property", "-Dproperty=" + property, "-DnewVersion=" + fixVersion, "-DgenerateBackupPoms=false"}
updatePropertyArgs := []string{"-B", "versions:set-property", "-Dproperty=" + property, "-DnewVersion=" + fixVersion, "-DgenerateBackupPoms=false"}
updatePropertyCmd := fmt.Sprintf("mvn %s", strings.Join(updatePropertyArgs, " "))
clientLog.Debug(fmt.Sprintf("Running '%s'", updatePropertyCmd))
updatePropertyOutput, err := exec.Command("mvn", updatePropertyArgs...).CombinedOutput() // #nosec G204
Expand Down Expand Up @@ -362,14 +362,12 @@ func parseVersionChangeString(fixVersion string) string {
return latestVersion
}

type PackageType string

type FixVersionInfo struct {
fixVersion string
packageType PackageType
packageType coreutils.Technology
}

func NewFixVersionInfo(newFixVersion string, packageType PackageType) *FixVersionInfo {
func NewFixVersionInfo(newFixVersion string, packageType coreutils.Technology) *FixVersionInfo {
return &FixVersionInfo{newFixVersion, packageType}
}

Expand Down
62 changes: 52 additions & 10 deletions commands/createfixpullrequests_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,21 @@ package commands

import (
testdatautils "github.com/jfrog/build-info-go/build/testdata"
"github.com/jfrog/frogbot/commands/utils"
"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
"github.com/jfrog/jfrog-client-go/xray/services"
"github.com/stretchr/testify/assert"
"os"
"path/filepath"
"regexp"
"strings"
"testing"
)

type FixPackagesTestFunc func(test packageFixTest) error

type packageFixTest struct {
commandArgs []string
technology string
technology coreutils.Technology
impactedPackaged string
fixVersion string
operator string
Expand All @@ -26,7 +27,7 @@ type packageFixTest struct {
var packageFixTests = []packageFixTest{
{commandArgs: []string{"install"}, technology: coreutils.Npm, impactedPackaged: "minimatch", fixVersion: "3.0.2", operator: "@", packageDescriptor: "package.json", fixPackageVersion: getGenericFixPackageVersionFunc()},
{commandArgs: []string{"get"}, technology: coreutils.Go, impactedPackaged: "github.com/google/uuid", fixVersion: "1.3.0", operator: "@v", packageDescriptor: "go.mod", fixPackageVersion: getGenericFixPackageVersionFunc()},
{commandArgs: []string{"up"}, technology: strings.ToLower(coreutils.Yarn), impactedPackaged: "minimist", fixVersion: "1.2.6", operator: "@", packageDescriptor: "package.json", fixPackageVersion: getGenericFixPackageVersionFunc()},
{commandArgs: []string{"up"}, technology: coreutils.Yarn, impactedPackaged: "minimist", fixVersion: "1.2.6", operator: "@", packageDescriptor: "package.json", fixPackageVersion: getGenericFixPackageVersionFunc()},
{commandArgs: []string{"install"}, technology: coreutils.Pipenv, impactedPackaged: "pyjwt", fixVersion: "2.4.0", operator: "==", packageDescriptor: "Pipfile", fixPackageVersion: getGenericFixPackageVersionFunc()},
{technology: coreutils.Maven, impactedPackaged: "junit", fixVersion: "4.11", packageDescriptor: "pom.xml", fixPackageVersion: getMavenFixPackageVersionFunc()},
{technology: coreutils.Pip, impactedPackaged: "pyjwt", fixVersion: "2.4.0", packageDescriptor: "requirements.txt", fixPackageVersion: getPipFixPackageVersionFunc()},
Expand All @@ -52,9 +53,18 @@ var pipPackagesRegexTests = []pipPackageRegexTest{
{"urllib3", "urllib3 > 1.1.9, < 1.5.*"},
}

var packageTypes = []coreutils.Technology{
coreutils.Go,
coreutils.Maven,
coreutils.Npm,
coreutils.Yarn,
coreutils.Pip,
coreutils.Pipenv,
}

func getGenericFixPackageVersionFunc() FixPackagesTestFunc {
return func(test packageFixTest) error {
return fixPackageVersionGeneric(test.commandArgs, test.technology, test.impactedPackaged, test.fixVersion, test.operator)
return fixPackageVersionGeneric(test.commandArgs, test.technology.GetExecCommandName(), test.impactedPackaged, test.fixVersion, test.operator)
}
}

Expand All @@ -77,17 +87,14 @@ func getPipFixPackageVersionFunc() FixPackagesTestFunc {
}

func TestFixPackageVersion(t *testing.T) {
currentDir, err := os.Getwd()
assert.NoError(t, err)
testdataDir, err := filepath.Abs(filepath.Join("testdata/projects"))
assert.NoError(t, err)
currentDir, testdataDir := getTestDataDir(t)
for _, test := range packageFixTests {
// Create temp technology project
projectPath := filepath.Join(testdataDir, test.technology)
projectPath := filepath.Join(testdataDir, test.technology.ToString())
tmpProjectPath, cleanup := testdatautils.CreateTestProject(t, projectPath)
defer cleanup()
assert.NoError(t, os.Chdir(tmpProjectPath))
t.Run(test.technology, func(t *testing.T) {
t.Run(test.technology.ToString(), func(t *testing.T) {
// Fix impacted package for each technology
assert.NoError(t, test.fixPackageVersion(test))
file, err := os.ReadFile(test.packageDescriptor)
Expand All @@ -98,6 +105,14 @@ func TestFixPackageVersion(t *testing.T) {
assert.NoError(t, os.Chdir(currentDir))
}

func getTestDataDir(t *testing.T) (string, string) {
currentDir, err := os.Getwd()
assert.NoError(t, err)
testdataDir, err := filepath.Abs(filepath.Join("testdata/projects"))
assert.NoError(t, err)
return currentDir, testdataDir
}

/// 1.0 --> 1.0 ≤ x
/// (,1.0] --> x ≤ 1.0
/// (,1.0) --> x < 1.0
Expand Down Expand Up @@ -155,3 +170,30 @@ func TestPipPackageRegex(t *testing.T) {
assert.Equal(t, pack.expectedRequirement, found)
}
}

func TestPackageTypeFromScan(t *testing.T) {
params, restoreEnv := verifyEnv(t)
defer restoreEnv()
var testScan CreateFixPullRequestsCmd
var frogbotParams = utils.FrogbotParams{
JFrogEnvParams: params,
}
for _, pkgType := range packageTypes {
// Create temp technology project
projectPath := filepath.Join("testdata", "projects", pkgType.ToString())
t.Run(pkgType.ToString(), func(t *testing.T) {
frogbotParams.WorkingDirectory = projectPath
scanResponse, err := testScan.scan(&frogbotParams)
assert.NoError(t, err)
verifyTechnologyNaming(t, scanResponse, pkgType)
})
}
}

func verifyTechnologyNaming(t *testing.T, scanResponse []services.ScanResponse, expectedType coreutils.Technology) {
for _, resp := range scanResponse {
for _, vulnerability := range resp.Vulnerabilities {
assert.Equal(t, expectedType.ToString(), vulnerability.Technology)
}
}
}
10 changes: 9 additions & 1 deletion commands/testdata/projects/go/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,12 @@ module github.com/you/hello

go 1.18

require github.com/google/uuid v1.2.0
require (
github.com/google/uuid v1.2.0
github.com/sassoftware/go-rpmutils v0.1.0
)

require (
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 // indirect
)
11 changes: 11 additions & 0 deletions commands/testdata/projects/go/go.sum
Original file line number Diff line number Diff line change
@@ -1,2 +1,13 @@
github.com/google/uuid v1.2.0 h1:qJYtXnJRWmpe7m/3XlyhrsLrEURqHRM2kxzoxXqyUDs=
github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/sassoftware/go-rpmutils v0.1.0 h1:VLrna+tV+77Tclr956QkY/pTyyKomQlq2Xw6PuE8tsc=
github.com/sassoftware/go-rpmutils v0.1.0/go.mod h1:euhXULoBpvAxqrBHEyJS4Tsu3hHxUmQWNymxoJbzgUY=
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 h1:vEg9joUBmeBcK9iSJftGNf3coIG4HqZElCPehJsfAYM=
golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
2 changes: 2 additions & 0 deletions commands/testdata/projects/go/hello.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package main
import (
"fmt"
"github.com/google/uuid"
"github.com/sassoftware/go-rpmutils"
)

func main() {
fmt.Println("test")
uuid.New()
_, _ = rpmutils.ReadRpm(nil)
}
File renamed without changes.
13 changes: 13 additions & 0 deletions commands/testdata/projects/npm/node_modules/.package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

27 changes: 27 additions & 0 deletions commands/testdata/projects/npm/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

25 changes: 19 additions & 6 deletions commands/testdata/projects/yarn/yarn.lock
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
# This file is generated by running "yarn install" inside your project.
# Manual changes might be lost - proceed with caution!

__metadata:
version: 6
cacheKey: 8

"minimist@1.2.5":
"integrity" "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
"resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
"version" "1.2.5"
"minimist@npm:1.2.5":
version: 1.2.5
resolution: "minimist@npm:1.2.5"
checksum: 86706ce5b36c16bfc35c5fe3dbb01d5acdc9a22f2b6cc810b6680656a1d2c0e44a0159c9a3ba51fb072bb5c203e49e10b51dcd0eec39c481f4c42086719bae52
languageName: node
linkType: hard

"test_yarn_project@workspace:.":
version: 0.0.0-use.local
resolution: "test_yarn_project@workspace:."
dependencies:
minimist: 1.2.5
languageName: unknown
linkType: soft
11 changes: 6 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ go 1.18
require (
github.com/go-git/go-git/v5 v5.4.2
github.com/golang/mock v1.6.0
github.com/jfrog/build-info-go v1.5.0
github.com/jfrog/build-info-go v1.5.2
github.com/jfrog/froggit-go v1.3.2
github.com/jfrog/gofrog v1.2.1
github.com/jfrog/jfrog-cli-core/v2 v2.20.3
github.com/jfrog/jfrog-client-go v1.21.0
github.com/jfrog/jfrog-cli-core/v2 v2.20.8
github.com/jfrog/jfrog-client-go v1.23.2
github.com/stretchr/testify v1.8.0
github.com/urfave/cli/v2 v2.11.2
)
Expand Down Expand Up @@ -79,6 +79,7 @@ require (
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
golang.org/x/crypto v0.0.0-20220817201139-bc19a97f63c8 // indirect
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 // indirect
golang.org/x/net v0.0.0-20220812174116-3211cb980234 // indirect
golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect
golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10 // indirect
Expand All @@ -93,8 +94,8 @@ require (
gopkg.in/yaml.v3 v3.0.1 // indirect
)

replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.21.1-0.20220828160454-7c617b0d1582
// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.21.1-0.20220828160454-7c617b0d1582

replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.20.4-0.20220828162945-87e0c451c13f
//replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.16.1-0.20220621124242-4fe813879da6

// replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.4.2-0.20220825155547-eff444e96d62
14 changes: 8 additions & 6 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -210,16 +210,16 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i
github.com/jedib0t/go-pretty/v6 v6.3.7 h1:H3Ulkf7h6A+p0HgKBGzgDn0bZIupRbKKWF4pO4Bs7iA=
github.com/jedib0t/go-pretty/v6 v6.3.7/go.mod h1:MgmISkTWDSFu0xOqiZ0mKNntMQ2mDgOcwOkwBEkMDJI=
github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4=
github.com/jfrog/build-info-go v1.5.0 h1:p8lM48GTVeB484qciBxEXzCsAt3jW8iOkxJNH5Ms5/k=
github.com/jfrog/build-info-go v1.5.0/go.mod h1:fhJ88VZDcbQQWAYDWE4k7lpA7lbMh8689cHBFvc7nA4=
github.com/jfrog/build-info-go v1.5.2 h1:EWNoTAtyg76mmCVWVSiJ/LFJr2MTkHo6UwmakabtEFc=
github.com/jfrog/build-info-go v1.5.2/go.mod h1:LkGqSQ9C14idhHq75b3tX1X3q51mxnFxrzKE+uxVaGk=
github.com/jfrog/froggit-go v1.3.2 h1:fkzsI13vQkZZ2eZiN1Pyq+ZNxlJ4lLF/jZ/MuUx8uk0=
github.com/jfrog/froggit-go v1.3.2/go.mod h1:QPE1t+DTKgp7TxLQ1ZftDQVzkCHXAyYQskLGAKQe8yM=
github.com/jfrog/gofrog v1.2.1 h1:3pIcyPfKcA9SIinE1UiC4+8OLg+UinHH/dfsOZH3qXg=
github.com/jfrog/gofrog v1.2.1/go.mod h1:lbkGXX/DHKdomaSV34eiOC3pAr1HRNa9ffOYh7U7b1U=
github.com/jfrog/jfrog-cli-core/v2 v2.20.4-0.20220828162945-87e0c451c13f h1:kIOk8zs73lWa4glZN4Riy+OiRyA/mfo8wXBRE+2pILE=
github.com/jfrog/jfrog-cli-core/v2 v2.20.4-0.20220828162945-87e0c451c13f/go.mod h1:0BU+7TcfOxj0ARnd3Y/7WNAvIidOXK6YUghXnjEjAVw=
github.com/jfrog/jfrog-client-go v1.21.1-0.20220828160454-7c617b0d1582 h1:ml9s9DlQUcFRQd3vKi+RHO+ArbUjQ/sAULx9HWAq3wU=
github.com/jfrog/jfrog-client-go v1.21.1-0.20220828160454-7c617b0d1582/go.mod h1:alcZe1Qa0x/hj6AQmew3ayVouNWsb2rZOVL5mmeg8HE=
github.com/jfrog/jfrog-cli-core/v2 v2.20.8 h1:4sW4D/jSGHq94E5VXpVZZiYIMsmhvYDkC9pd5KBhzvc=
github.com/jfrog/jfrog-cli-core/v2 v2.20.8/go.mod h1:rfYVJbV1IpkOrxoREg1TSw6EOMOf5IN0OIRVaLRFbaQ=
github.com/jfrog/jfrog-client-go v1.23.2 h1:ldgMRl5JJtzWkiWuSvg/0h7MXyGuPaYT5BYKxXF29jU=
github.com/jfrog/jfrog-client-go v1.23.2/go.mod h1:y1i4F8WlaxHUbhEpI2r8xbT6hWnlSHh/4Gn2wi7PeB8=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk=
github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88/go.mod h1:3w7q1U84EfirKl04SVQ/s7nPm1ZPhiXd34z40TNz36k=
Expand Down Expand Up @@ -376,6 +376,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91 h1:tnebWN09GYg9OLPss1KXj8txwZc6X6uMr6VFdcGNbHw=
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
Expand Down

0 comments on commit 52a8b12

Please sign in to comment.