diff --git a/commands/createfixpullrequests.go b/commands/createfixpullrequests.go index 9b73a1257..af55b2049 100644 --- a/commands/createfixpullrequests.go +++ b/commands/createfixpullrequests.go @@ -68,6 +68,7 @@ func (cfp *CreateFixPullRequestsCmd) scanAndFixRepository(repository *utils.Frog Client: client, FailOnInstallationErrors: *repository.FailOnSecurityIssues, Branch: branch, + ReleasesRepo: repository.JfrogReleasesRepo, } for _, project := range repository.Projects { cfp.details.Project = project diff --git a/commands/scanandfixrepos_test.go b/commands/scanandfixrepos_test.go index e0fba6ca8..8eeb19c27 100644 --- a/commands/scanandfixrepos_test.go +++ b/commands/scanandfixrepos_test.go @@ -55,7 +55,7 @@ func TestScanAndFixRepos(t *testing.T) { defer cleanUp() createReposGitEnvironment(t, tmpDir, port, testRepositories...) - configAggregator, err := utils.NewConfigAggregatorFromFile(configData, gitTestParams, &serverParams) + configAggregator, err := utils.NewConfigAggregatorFromFile(configData, gitTestParams, &serverParams, "") assert.NoError(t, err) var cmd = ScanAndFixRepositories{dryRun: true, dryRunRepoPath: filepath.Join("testdata", "scanandfixrepos")} diff --git a/commands/scanpullrequest.go b/commands/scanpullrequest.go index 0664976ff..541537c3c 100644 --- a/commands/scanpullrequest.go +++ b/commands/scanpullrequest.go @@ -85,6 +85,7 @@ func auditPullRequest(repoConfig *utils.FrogbotRepoConfig, client vcsclient.VcsC Git: &repoConfig.Git, FailOnInstallationErrors: false, Branch: repoConfig.Branches[0], + ReleasesRepo: repoConfig.JfrogReleasesRepo, } currentScan, isMultipleRoot, err := auditSource(scanSetup) if err != nil { @@ -271,6 +272,7 @@ func runInstallAndAudit(scanSetup *utils.ScanDetails, workDirs ...string) (resul SetRequirementsFile(scanSetup.PipRequirementsFile). SetWorkingDirs(workDirs). SetDepsRepo(scanSetup.Repository). + SetReleasesRepo(scanSetup.ReleasesRepo). SetIgnoreConfigFile(true) results, isMultipleRoot, err = audit.GenericAudit(auditParams) if err != nil { diff --git a/commands/scanpullrequest_test.go b/commands/scanpullrequest_test.go index cb7e37fad..0d4704b31 100644 --- a/commands/scanpullrequest_test.go +++ b/commands/scanpullrequest_test.go @@ -554,7 +554,7 @@ func prepareConfigAndClient(t *testing.T, configPath string, server *httptest.Se configData, err := utils.ReadConfigFromFileSystem(configPath) assert.NoError(t, err) - configAggregator, err := utils.NewConfigAggregatorFromFile(configData, git, &serverParams) + configAggregator, err := utils.NewConfigAggregatorFromFile(configData, git, &serverParams, "") assert.NoError(t, err) client, err := vcsclient.NewClientBuilder(vcsutils.GitLab).ApiEndpoint(server.URL).Token("123456").Build() diff --git a/commands/utils/extractors.go b/commands/utils/extractors.go index 6103891e5..eea93d3ab 100644 --- a/commands/utils/extractors.go +++ b/commands/utils/extractors.go @@ -12,7 +12,7 @@ import ( "github.com/jfrog/jfrog-client-go/utils/log" ) -var extractorsRepositoryPath = filepath.Join("artifactory", "oss-release-local") +var extractorsRepositoryPath = "artifactory/oss-release-local" // extractorDetails holds the relevant details to download the build-info extractors. // Build Info is Artifactory's open integration layer for the CI servers and build tools. @@ -33,55 +33,38 @@ func (ed *extractorDetails) downloadFromPath() string { } // downloadExtractorsFromRemoteIfNeeded downloads build-info-extractors from a remote repository, if they do not yet exist on the file system. -func downloadExtractorsFromRemoteIfNeeded(server *config.ServerDetails, extractorsLocalPath string) (err error) { - var releasesRepo string +func downloadExtractorsFromRemoteIfNeeded(server *config.ServerDetails, extractorsLocalPath string) (releasesRepo string, err error) { if releasesRepo = getTrimmedEnv(jfrogReleasesRepoEnv); releasesRepo == "" { - return nil + return } // Download extractors if remote repo environment variable is set log.Info("Checking whether the build-info extractors exist locally") if extractorsLocalPath == "" { extractorsLocalPath, err = config.GetJfrogDependenciesPath() if err != nil { - return err + return } } mavenExtractorLocalPath := filepath.Join(extractorsLocalPath, "maven", build.MavenExtractorDependencyVersion) - gradleExtractorLocalPath := filepath.Join(extractorsLocalPath, "gradle", build.GradleExtractorDependencyVersion) - extractors := []extractorDetails{ - { - extractorType: coreutils.Maven.ToString(), - localPath: mavenExtractorLocalPath, - fileName: fmt.Sprintf(build.MavenExtractorFileName, build.MavenExtractorDependencyVersion), - remotePath: fmt.Sprintf(build.MavenExtractorRemotePath, build.MavenExtractorDependencyVersion), - }, - { - extractorType: coreutils.Gradle.ToString(), - localPath: gradleExtractorLocalPath, - fileName: fmt.Sprintf(build.GradleExtractorFileName, build.GradleExtractorDependencyVersion), - remotePath: fmt.Sprintf(build.GradleExtractorRemotePath, build.GradleExtractorDependencyVersion), - }, + mavenExtractor := extractorDetails{ + extractorType: coreutils.Maven.ToString(), + localPath: mavenExtractorLocalPath, + fileName: fmt.Sprintf(build.MavenExtractorFileName, build.MavenExtractorDependencyVersion), + remotePath: fmt.Sprintf(build.MavenExtractorRemotePath, build.MavenExtractorDependencyVersion), } - return downloadExtractors(releasesRepo, server, extractors...) + return releasesRepo, downloadExtractor(releasesRepo, server, mavenExtractor) } -func downloadExtractors(remoteRepoName string, server *config.ServerDetails, extractors ...extractorDetails) (err error) { - for _, extractor := range extractors { - var alreadyExist bool - if alreadyExist, err = fileutils.IsDirExists(extractor.localPath, false); alreadyExist { - log.Debug(extractor.extractorType, "extractor already exists, no download necessary") - continue - } - if err != nil { - return err - } - log.Info("Downloading", extractor.extractorType, "extractor to path:", extractor.localPath) - remoteServer := getRemoteServer(server, remoteRepoName) - if err = utils.DownloadExtractor(remoteServer, extractor.downloadFromPath(), extractor.downloadToPath()); err != nil { - return err - } +func downloadExtractor(remoteRepoName string, server *config.ServerDetails, extractor extractorDetails) (err error) { + var alreadyExist bool + if alreadyExist, err = fileutils.IsDirExists(extractor.localPath, false); alreadyExist { + log.Debug(extractor.extractorType, "extractor already exists, no download required") + return } - return + + log.Info("Downloading", extractor.extractorType, "extractor to path:", extractor.localPath) + remoteServer := getRemoteServer(server, remoteRepoName) + return utils.DownloadExtractor(remoteServer, extractor.downloadFromPath(), extractor.downloadToPath()) } func getRemoteServer(server *config.ServerDetails, remoteName string) *config.ServerDetails { diff --git a/commands/utils/extractors_test.go b/commands/utils/extractors_test.go index f8f439694..588c8b2aa 100644 --- a/commands/utils/extractors_test.go +++ b/commands/utils/extractors_test.go @@ -14,10 +14,12 @@ import ( func TestDownloadExtractorsFromRemoteIfNeeded(t *testing.T) { serverDetails := &config.ServerDetails{ - AccessToken: "eyJ0eXAiOiJKV1QifQ.eyJzdWIiOiJmYWtlXC91c2Vyc1wvdGVzdCJ9.MTIzNDU2Nzg5MA", + AccessToken: "eyJ0eXAiOiJKV1QifQ.eyJzdWIiOiJmYWtlXC91c2Vy2323c1wvdGVzdCJ9.MTIzNDU2Nzg5MA", } assert.NoError(t, os.Setenv(jfrogReleasesRepoEnv, "remote-repo")) - defer assert.NoError(t, os.Unsetenv(jfrogReleasesRepoEnv)) + defer func() { + assert.NoError(t, os.Unsetenv(jfrogReleasesRepoEnv)) + }() tmpDir, err := fileutils.CreateTempDir() assert.NoError(t, err) restoreDir, err := Chdir(tmpDir) @@ -27,9 +29,13 @@ func TestDownloadExtractorsFromRemoteIfNeeded(t *testing.T) { assert.NoError(t, fileutils.RemoveTempDir(tmpDir)) }() testServer := httptest.NewServer(createRemoteArtifactoryHandler()) - defer testServer.Close() + defer func() { + testServer.Close() + }() serverDetails.ArtifactoryUrl = testServer.URL + "/artifactory/" - assert.NoError(t, downloadExtractorsFromRemoteIfNeeded(serverDetails, tmpDir)) + releasesRepo, err := downloadExtractorsFromRemoteIfNeeded(serverDetails, tmpDir) + assert.NoError(t, err) + assert.Equal(t, "remote-repo", releasesRepo) } // Create HTTP handler to mock remote artifactory server @@ -38,10 +44,7 @@ func createRemoteArtifactoryHandler() http.HandlerFunc { expectedMavenUri := fmt.Sprintf("/artifactory/remote-repo/artifactory/oss-release-local/%s/%s", fmt.Sprintf(build.MavenExtractorRemotePath, build.MavenExtractorDependencyVersion), fmt.Sprintf(build.MavenExtractorFileName, build.MavenExtractorDependencyVersion)) - expectedGradleUri := fmt.Sprintf("/artifactory/remote-repo/artifactory/oss-release-local/%s/%s", - fmt.Sprintf(build.GradleExtractorRemotePath, build.GradleExtractorDependencyVersion), - fmt.Sprintf(build.GradleExtractorFileName, build.GradleExtractorDependencyVersion)) - if r.RequestURI == expectedMavenUri || r.RequestURI == expectedGradleUri { + if r.RequestURI == expectedMavenUri { w.WriteHeader(http.StatusOK) return } diff --git a/commands/utils/params.go b/commands/utils/params.go index bdb5538a2..434352c3a 100644 --- a/commands/utils/params.go +++ b/commands/utils/params.go @@ -99,6 +99,7 @@ type Scan struct { IncludeAllVulnerabilities bool `yaml:"includeAllVulnerabilities,omitempty"` FailOnSecurityIssues *bool `yaml:"failOnSecurityIssues,omitempty"` Projects []Project `yaml:"projects,omitempty"` + JfrogReleasesRepo string } func (s *Scan) setDefaultsIfNeeded() *Scan { @@ -167,14 +168,15 @@ func GetFrogbotUtils() (frogbotUtils *FrogbotUtils, err error) { // getConfigAggregator returns a FrogbotConfigAggregator based on frogbot-config.yml and environment variables. func getConfigAggregator(client vcsclient.VcsClient, server *coreconfig.ServerDetails, gitParams *Git) (FrogbotConfigAggregator, error) { - if err := downloadExtractorsFromRemoteIfNeeded(server, ""); err != nil { + releasesRepo, err := downloadExtractorsFromRemoteIfNeeded(server, "") + if err != nil { return nil, err } configFileContent, err := getConfigFileContent(client) // If there is a missing configuration file error, try to generate an environment variable-based config aggregator. if _, missingConfigErr := err.(*ErrMissingConfig); missingConfigErr { log.Debug("Unable to retrieve", FrogbotConfigFile, err.Error()) - configAggregator, err := newConfigAggregatorFromEnv(gitParams, server) + configAggregator, err := newConfigAggregatorFromEnv(gitParams, server, releasesRepo) if err != nil { return nil, err } @@ -183,7 +185,7 @@ func getConfigAggregator(client vcsclient.VcsClient, server *coreconfig.ServerDe return nil, err } - return NewConfigAggregatorFromFile(configFileContent, gitParams, server) + return NewConfigAggregatorFromFile(configFileContent, gitParams, server, releasesRepo) } // The getConfigFileContent function retrieves the frogbot-config.yml file content. @@ -205,7 +207,7 @@ func getConfigFileContent(client vcsclient.VcsClient) (configFileContent []byte, } // NewConfigAggregatorFromFile receive a frogbot-config.yml file content along with the Git and ServerDetails parameters, and returns a FrogbotConfigAggregator instance with all the default and necessary fields. -func NewConfigAggregatorFromFile(configFileContent []byte, gitParams *Git, server *coreconfig.ServerDetails) (result FrogbotConfigAggregator, err error) { +func NewConfigAggregatorFromFile(configFileContent []byte, gitParams *Git, server *coreconfig.ServerDetails, releasesRepo string) (result FrogbotConfigAggregator, err error) { // Unmarshal the frogbot-config.yml file result, err = result.UnmarshalYaml(configFileContent) if err != nil { @@ -217,6 +219,7 @@ func NewConfigAggregatorFromFile(configFileContent []byte, gitParams *Git, serve if result[i].Branches != nil { gitParams.Branches = result[i].Branches } + result[i].JfrogReleasesRepo = releasesRepo result[i].Git = *gitParams result[i].Server = *server result[i].OutputWriter = GetCompatibleOutputWriter(result[i].GitProvider) @@ -427,7 +430,7 @@ func getBoolEnv(envKey string, defaultValue bool) (bool, error) { } // In case frogbot-config.yml does not exist, newConfigAggregatorFromEnv generates a FrogbotConfigAggregator with the environment variables values. -func newConfigAggregatorFromEnv(gitParams *Git, server *coreconfig.ServerDetails) (FrogbotConfigAggregator, error) { +func newConfigAggregatorFromEnv(gitParams *Git, server *coreconfig.ServerDetails, releasesRepo string) (FrogbotConfigAggregator, error) { // The repo name must be set as a part of the envs. if gitParams.RepoName == "" { return nil, &ErrMissingEnv{GitRepoEnv} @@ -441,6 +444,7 @@ func newConfigAggregatorFromEnv(gitParams *Git, server *coreconfig.ServerDetails if err := extractRepoParamsFromEnv(&repo); err != nil { return nil, err } + repo.JfrogReleasesRepo = releasesRepo repo.Projects = append(repo.Projects, project) repo.OutputWriter = GetCompatibleOutputWriter(gitParams.GitProvider) return FrogbotConfigAggregator{repo}, nil diff --git a/commands/utils/params_test.go b/commands/utils/params_test.go index 6d9666e4e..d393ae658 100644 --- a/commands/utils/params_test.go +++ b/commands/utils/params_test.go @@ -146,7 +146,7 @@ func TestExtractAndAssertRepoParams(t *testing.T) { assert.NoError(t, err) configFileContent, err := ReadConfigFromFileSystem(configParamsTestFile) assert.NoError(t, err) - configAggregator, err := NewConfigAggregatorFromFile(configFileContent, gitParams, server) + configAggregator, err := NewConfigAggregatorFromFile(configFileContent, gitParams, server, "") assert.NoError(t, err) for _, repo := range configAggregator { for projectI, project := range repo.Projects { @@ -172,7 +172,7 @@ func testExtractAndAssertProjectParams(t *testing.T, project Project) { func extractAndAssertParamsFromEnv(t *testing.T, platformUrl, basicAuth bool) { server, gitParams, err := extractEnvParams() assert.NoError(t, err) - configFile, err := newConfigAggregatorFromEnv(gitParams, server) + configFile, err := newConfigAggregatorFromEnv(gitParams, server, "") assert.NoError(t, err) err = SanitizeEnv() assert.NoError(t, err) @@ -269,10 +269,11 @@ func TestGenerateConfigAggregatorFromEnv(t *testing.T) { User: "admin", Password: "password", } - configAggregator, err := newConfigAggregatorFromEnv(&gitParams, &server) + configAggregator, err := newConfigAggregatorFromEnv(&gitParams, &server, "releases-remote") assert.NoError(t, err) repo := configAggregator[0] assert.Equal(t, "repoName", repo.RepoName) + assert.Equal(t, "releases-remote", repo.JfrogReleasesRepo) assert.ElementsMatch(t, repo.Watches, []string{"watch-1", "watch-2", "watch-3"}) assert.Equal(t, false, *repo.FailOnSecurityIssues) assert.Equal(t, gitParams.RepoOwner, repo.RepoOwner) diff --git a/commands/utils/utils.go b/commands/utils/utils.go index 8798f6ded..d52422bba 100644 --- a/commands/utils/utils.go +++ b/commands/utils/utils.go @@ -51,6 +51,7 @@ type ScanDetails struct { Client vcsclient.VcsClient FailOnInstallationErrors bool Branch string + ReleasesRepo string } // The OutputWriter interface allows Frogbot output to be written in an appropriate way for each git provider. diff --git a/go.mod b/go.mod index 8b2dbae59..b7ede002b 100644 --- a/go.mod +++ b/go.mod @@ -5,15 +5,15 @@ go 1.19 require ( github.com/go-git/go-git/v5 v5.6.1 github.com/golang/mock v1.6.0 - github.com/jfrog/build-info-go v1.9.0 + github.com/jfrog/build-info-go v1.9.1 github.com/jfrog/froggit-go v1.7.0 github.com/jfrog/gofrog v1.2.5 - github.com/jfrog/jfrog-cli-core/v2 v2.31.0 - github.com/jfrog/jfrog-client-go v1.28.0 + github.com/jfrog/jfrog-cli-core/v2 v2.31.1 + github.com/jfrog/jfrog-client-go v1.28.1 github.com/mholt/archiver/v3 v3.5.1 github.com/pkg/errors v0.9.1 github.com/stretchr/testify v1.8.2 - github.com/urfave/cli/v2 v2.25.0 + github.com/urfave/cli/v2 v2.25.1 github.com/xeipuuv/gojsonschema v1.2.0 gopkg.in/yaml.v2 v2.4.0 gopkg.in/yaml.v3 v3.0.1 @@ -21,9 +21,9 @@ require ( require ( github.com/BurntSushi/toml v1.2.1 // indirect - github.com/CycloneDX/cyclonedx-go v0.7.0 // indirect + github.com/CycloneDX/cyclonedx-go v0.7.1 // indirect github.com/Microsoft/go-winio v0.5.2 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec // indirect github.com/VividCortex/ewma v1.2.0 // indirect github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d // indirect github.com/acomagu/bufpipe v1.0.4 // indirect @@ -58,7 +58,7 @@ require ( github.com/jedib0t/go-pretty/v6 v6.4.6 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect github.com/klauspost/compress v1.11.4 // indirect - github.com/klauspost/cpuid/v2 v2.0.6 // indirect + github.com/klauspost/cpuid/v2 v2.2.3 // indirect github.com/klauspost/pgzip v1.2.5 // indirect github.com/ktrysmt/go-bitbucket v0.9.32 // indirect github.com/magiconair/properties v1.8.7 // indirect @@ -68,7 +68,7 @@ require ( github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mattn/go-tty v0.0.3 // indirect github.com/microsoft/azure-devops-go-api/azuredevops v1.0.0-b5 // indirect - github.com/minio/sha256-simd v1.0.1-0.20210617151322-99e45fae3395 // indirect + github.com/minio/sha256-simd v1.0.1-0.20230222114820-6096f891a77b // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/nwaples/rardecode v1.1.0 // indirect github.com/owenrumney/go-sarif/v2 v2.1.3 // indirect @@ -110,3 +110,9 @@ require ( gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) + +//replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.13.2-0.20230404093739-610cb3af8862 + +//replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.15.3-0.20230404095831-ce76a2622e41 + +//replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20230403064815-ea83b399ac8e diff --git a/go.sum b/go.sum index 927d051c4..6570dba82 100644 --- a/go.sum +++ b/go.sum @@ -40,12 +40,13 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03 github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/CycloneDX/cyclonedx-go v0.7.0 h1:jNxp8hL7UpcvPDFXjY+Y1ibFtsW+e5zyF9QoSmhK/zg= -github.com/CycloneDX/cyclonedx-go v0.7.0/go.mod h1:W5Z9w8pTTL+t+yG3PCiFRGlr8PUlE0pGWzKSJbsyXkg= +github.com/CycloneDX/cyclonedx-go v0.7.1 h1:5w1SxjGm9MTMNTuRbEPyw21ObdbaagTWF/KfF0qHTRE= +github.com/CycloneDX/cyclonedx-go v0.7.1/go.mod h1:N/nrdWQI2SIjaACyyDs/u7+ddCkyl/zkNs8xFsHF2Ps= github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VMrpA= github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v8QkMxJ6pZY= -github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= +github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec h1:eQusauqzE1cAFR5hGnwkuSmFxKoy3+j9/cVaDeYfjjs= +github.com/ProtonMail/go-crypto v0.0.0-20230331115716-d34776aa93ec/go.mod h1:8TI4H3IbrackdNgv+92dI+rhpCaLqM0IfpgCgenFvRE= github.com/VividCortex/ewma v1.2.0 h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow= github.com/VividCortex/ewma v1.2.0/go.mod h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4= github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= @@ -221,16 +222,16 @@ github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99/go.mod h1:1lJo3i github.com/jedib0t/go-pretty/v6 v6.4.6 h1:v6aG9h6Uby3IusSSEjHaZNXpHFhzqMmjXcPq1Rjl9Jw= github.com/jedib0t/go-pretty/v6 v6.4.6/go.mod h1:Ndk3ase2CkQbXLLNf5QDHoYb6J9WtVfmHZu9n8rk2xs= github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= -github.com/jfrog/build-info-go v1.9.0 h1:gLxBfp4C6pVz+bKTmsqwFGZAueVMuzGw+/M9HZgtGG4= -github.com/jfrog/build-info-go v1.9.0/go.mod h1:dQ8OKddrbgtO3jK9uLYoqmRGNEjuDuNXV0bSRdpeTCI= +github.com/jfrog/build-info-go v1.9.1 h1:PxLQ9aBPm2J3WKTkaxU0YmfVCdjHPbIM/WKmrV6686E= +github.com/jfrog/build-info-go v1.9.1/go.mod h1:n0qDS24PIUH/Dag/lwzWPcMXalu+c3mahjkRrDteKnA= github.com/jfrog/froggit-go v1.7.0 h1:ID0X81Cp1JWYeTZ5Co2IxgFKFljqgAEXDqTFRPGjQR0= github.com/jfrog/froggit-go v1.7.0/go.mod h1:xfsfQXzSaAM04RV9IyU5heBiRrsm2oS6rFCfEofQr6U= github.com/jfrog/gofrog v1.2.5 h1:jCgJC0iGQ8bU7jCC+YEFJTNINyngApIrhd8BjZAVRIE= github.com/jfrog/gofrog v1.2.5/go.mod h1:o00tSRff6IapTgaCMuX1Cs9MH08Y1JqnsKgRtx91Gc4= -github.com/jfrog/jfrog-cli-core/v2 v2.31.0 h1:kKWc37KSquiu/sKOETu6o5bXqHWCoyg7Do7BZl/huFo= -github.com/jfrog/jfrog-cli-core/v2 v2.31.0/go.mod h1:ck+ik2FmKG+VCDevePiURC+Zl5O3oLrMfSQk4jNH9Z0= -github.com/jfrog/jfrog-client-go v1.28.0 h1:PZzcoZZESgSWStd7WK71hpR4LxF1ih89r4XWzZr6Ng0= -github.com/jfrog/jfrog-client-go v1.28.0/go.mod h1:tBaVE+j1Dgo3BcGGBuFm0jbOmjNTaZadwo6jvFiv89Y= +github.com/jfrog/jfrog-cli-core/v2 v2.31.1 h1:SICnzweOYC8Gap8LEmZbZNaLX2J6pdpZh4Wg/FO6UBo= +github.com/jfrog/jfrog-cli-core/v2 v2.31.1/go.mod h1:5Xm8RFFsnm31jGZflTrIKt7RIJIx6eZIVUA31hlEeSY= +github.com/jfrog/jfrog-client-go v1.28.1 h1:sBPtMg4UGkQ31CDJwFImIWwy6jEP/uarLO4F6y18Jis= +github.com/jfrog/jfrog-client-go v1.28.1/go.mod h1:XJhlPfi6iayIVc2SQ/RbztDQOnbnNatsUSQr7wbJ8Ag= 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= @@ -242,8 +243,8 @@ github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0 github.com/klauspost/compress v1.11.4 h1:kz40R/YWls3iqT9zX9AHN3WoVsrAWVyui5sxuLqiXqU= github.com/klauspost/compress v1.11.4/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= -github.com/klauspost/cpuid/v2 v2.0.6 h1:dQ5ueTiftKxp0gyjKSx5+8BtPWkyQbd95m8Gys/RarI= -github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.3 h1:sxCkb+qR91z4vsqw4vGGZlDgPz3G7gjaLyK3V8y70BU= +github.com/klauspost/cpuid/v2 v2.2.3/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= github.com/klauspost/pgzip v1.2.5 h1:qnWYvvKqedOF2ulHpMG72XQol4ILEJ8k2wwRl/Km8oE= github.com/klauspost/pgzip v1.2.5/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= @@ -284,8 +285,8 @@ github.com/mholt/archiver/v3 v3.5.1 h1:rDjOBX9JSF5BvoJGvjqK479aL70qh9DIpZCl+k7Cl github.com/mholt/archiver/v3 v3.5.1/go.mod h1:e3dqJ7H78uzsRSEACH1joayhuSyhnonssnDhppzS1L4= github.com/microsoft/azure-devops-go-api/azuredevops v1.0.0-b5 h1:YH424zrwLTlyHSH/GzLMJeu5zhYVZSx5RQxGKm1h96s= github.com/microsoft/azure-devops-go-api/azuredevops v1.0.0-b5/go.mod h1:PoGiBqKSQK1vIfQ+yVaFcGjDySHvym6FM1cNYnwzbrY= -github.com/minio/sha256-simd v1.0.1-0.20210617151322-99e45fae3395 h1:GpZ9VB5YQdXbVvgCeyqzBPYijxEMehMhax1fUpCuVSc= -github.com/minio/sha256-simd v1.0.1-0.20210617151322-99e45fae3395/go.mod h1:f+LTnn56dRz2YGVXAZIW3myTjkbJhfyRDELQpWRHXto= +github.com/minio/sha256-simd v1.0.1-0.20230222114820-6096f891a77b h1:kr87H4ULRbe6LQNF5f3A+nGY8TQLgckmdG9BLJ/QB18= +github.com/minio/sha256-simd v1.0.1-0.20230222114820-6096f891a77b/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/mapstructure v0.0.0-20180220230111-00c29f56e238/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= @@ -356,8 +357,8 @@ github.com/ulikunitz/xz v0.5.9 h1:RsKRIA2MO8x56wkkcd3LbtcE/uMszhb6DpRf+3uwa3I= github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/urfave/cli v1.22.12 h1:igJgVw1JdKH+trcLWLeLwZjU9fEfPesQ+9/e4MQ44S8= github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= -github.com/urfave/cli/v2 v2.25.0 h1:ykdZKuQey2zq0yin/l7JOm9Mh+pg72ngYMeB0ABn6q8= -github.com/urfave/cli/v2 v2.25.0/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= +github.com/urfave/cli/v2 v2.25.1 h1:zw8dSP7ghX0Gmm8vugrs6q9Ku0wzweqPyshy+syu9Gw= +github.com/urfave/cli/v2 v2.25.1/go.mod h1:GHupkWPMM0M/sj1a2b4wUrWBPzazNrIjouW6fmdJLxc= github.com/vbauerster/mpb/v7 v7.5.3 h1:BkGfmb6nMrrBQDFECR/Q7RkKCw7ylMetCb4079CGs4w= github.com/vbauerster/mpb/v7 v7.5.3/go.mod h1:i+h4QY6lmLvBNK2ah1fSreiw3ajskRlBp9AhY/PnuOE= github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= @@ -445,6 +446,7 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -511,6 +513,7 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sys v0.0.0-20180224232135-f6cff0780e54/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -564,6 +567,7 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -651,6 +655,7 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=