diff --git a/artifactory/commands/buildinfo/addgit.go b/artifactory/commands/buildinfo/addgit.go index edafb2edc..a14fe27b1 100644 --- a/artifactory/commands/buildinfo/addgit.go +++ b/artifactory/commands/buildinfo/addgit.go @@ -209,7 +209,12 @@ func (config *BuildAddGitCommand) DoCollect(issuesConfig *IssuesConfiguration, l if errorutils.CheckError(err) != nil { return nil, err } - defer os.Chdir(wd) + defer func() { + e := os.Chdir(wd) + if err == nil { + err = errorutils.CheckError(e) + } + }() err = os.Chdir(config.dotGitPath) if errorutils.CheckError(err) != nil { return nil, err diff --git a/artifactory/commands/generic/download.go b/artifactory/commands/generic/download.go index 4b44c5a5c..31ce8a69f 100644 --- a/artifactory/commands/generic/download.go +++ b/artifactory/commands/generic/download.go @@ -62,7 +62,7 @@ func (dc *DownloadCommand) Run() error { return dc.download() } -func (dc *DownloadCommand) download() error { +func (dc *DownloadCommand) download() (err error) { // Init progress bar if needed if dc.progress != nil { dc.progress.InitProgressReaders() @@ -79,11 +79,12 @@ func (dc *DownloadCommand) download() error { return err } if toCollect && !dc.DryRun() { - buildName, err := dc.buildConfiguration.GetBuildName() + var buildName, buildNumber string + buildName, err = dc.buildConfiguration.GetBuildName() if err != nil { return err } - buildNumber, err := dc.buildConfiguration.GetBuildNumber() + buildNumber, err = dc.buildConfiguration.GetBuildNumber() if err != nil { return err } @@ -95,8 +96,9 @@ func (dc *DownloadCommand) download() error { var errorOccurred = false var downloadParamsArray []services.DownloadParams // Create DownloadParams for all File-Spec groups. + var downParams services.DownloadParams for i := 0; i < len(dc.Spec().Files); i++ { - downParams, err := getDownloadParams(dc.Spec().Get(i), dc.configuration) + downParams, err = getDownloadParams(dc.Spec().Get(i), dc.configuration) if err != nil { errorOccurred = true log.Error(err) @@ -116,13 +118,23 @@ func (dc *DownloadCommand) download() error { log.Error(err) } if summary != nil { - defer summary.ArtifactsDetailsReader.Close() + defer func() { + e := summary.ArtifactsDetailsReader.Close() + if err == nil { + err = e + } + }() // If 'detailed summary' was requested, then the reader should not be closed here. // It will be closed after it will be used to generate the summary. if dc.DetailedSummary() { dc.result.SetReader(summary.TransferDetailsReader) } else { - defer summary.TransferDetailsReader.Close() + defer func() { + e := summary.TransferDetailsReader.Close() + if err == nil { + err = e + } + }() } totalDownloaded = summary.TotalSucceeded totalFailed = summary.TotalFailed @@ -145,14 +157,21 @@ func (dc *DownloadCommand) download() error { dc.result.SetFailCount(0) return err } else if dc.SyncDeletesPath() != "" { - absSyncDeletesPath, err := filepath.Abs(dc.SyncDeletesPath()) + var absSyncDeletesPath string + absSyncDeletesPath, err = filepath.Abs(dc.SyncDeletesPath()) if err != nil { return errorutils.CheckError(err) } if _, err = os.Stat(absSyncDeletesPath); err == nil { // Unmarshal the local paths of the downloaded files from the results file reader - tmpRoot, err := createDownloadResultEmptyTmpReflection(summary.TransferDetailsReader) - defer fileutils.RemoveTempDir(tmpRoot) + var tmpRoot string + tmpRoot, err = createDownloadResultEmptyTmpReflection(summary.TransferDetailsReader) + defer func() { + e := fileutils.RemoveTempDir(tmpRoot) + if err == nil { + err = e + } + }() if err != nil { return err } @@ -169,11 +188,12 @@ func (dc *DownloadCommand) download() error { // Build Info if toCollect { - buildName, err := dc.buildConfiguration.GetBuildName() + var buildName, buildNumber string + buildName, err = dc.buildConfiguration.GetBuildName() if err != nil { return err } - buildNumber, err := dc.buildConfiguration.GetBuildNumber() + buildNumber, err = dc.buildConfiguration.GetBuildNumber() if err != nil { return err } @@ -296,6 +316,9 @@ func createLegalPath(root, path string) string { func createSyncDeletesWalkFunction(tempRoot string) gofrog.WalkFunc { return func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } // Convert path to absolute path path, err = filepath.Abs(path) if errorutils.CheckError(err) != nil { diff --git a/artifactory/commands/golang/archive.go b/artifactory/commands/golang/archive.go index 787942931..e9c7ddabd 100644 --- a/artifactory/commands/golang/archive.go +++ b/artifactory/commands/golang/archive.go @@ -99,6 +99,9 @@ func archiveProject(writer io.Writer, dir, mod, version string) error { var files []File err := filepath.Walk(dir, func(filePath string, info os.FileInfo, err error) error { + if err != nil { + return err + } relPath, err := filepath.Rel(dir, filePath) if err != nil { return err @@ -131,7 +134,6 @@ func archiveProject(writer io.Writer, dir, mod, version string) error { if goModInfo, err := os.Lstat(filepath.Join(filePath, "go.mod")); err == nil && !goModInfo.IsDir() { return filepath.SkipDir } - return nil } if info.Mode().IsRegular() { if !isVendoredPackage(slashPath) { diff --git a/artifactory/commands/utils/remoteurlchecker.go b/artifactory/commands/utils/remoteurlchecker.go index d48c2d142..28faa19e0 100644 --- a/artifactory/commands/utils/remoteurlchecker.go +++ b/artifactory/commands/utils/remoteurlchecker.go @@ -18,10 +18,7 @@ import ( type RemoteUrlCheckStatus string const ( - longPropertyCheckName = "Remote repositories URL connectivity" - success RemoteUrlCheckStatus = "SUCCESS" - inProgress RemoteUrlCheckStatus = "IN_PROGRESS" - + longPropertyCheckName = "Remote repositories URL connectivity" remoteUrlCheckPollingTimeout = 30 * time.Minute remoteUrlCheckPollingInterval = 5 * time.Second remoteUrlCheckRetries = 3 diff --git a/go.mod b/go.mod index 8543da071..0debd45f5 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/jedib0t/go-pretty/v6 v6.4.6 github.com/jfrog/build-info-go v1.9.0 github.com/jfrog/gofrog v1.2.5 - github.com/jfrog/jfrog-client-go v1.28.0 + github.com/jfrog/jfrog-client-go v0.0.0-00010101000000-000000000000 github.com/magiconair/properties v1.8.7 github.com/manifoldco/promptui v0.9.0 github.com/owenrumney/go-sarif/v2 v2.1.3 @@ -35,7 +35,7 @@ require ( github.com/BurntSushi/toml v1.2.1 // indirect github.com/CycloneDX/cyclonedx-go v0.7.0 // 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 @@ -92,7 +92,7 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.26.1-0.20230126120919-2cca98d435ec +replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20230403150018-9014235c59f5 // replace github.com/jfrog/build-info-go => github.com/jfrog/build-info-go v1.8.9-0.20230316095417-a9f6b73206d7 diff --git a/go.sum b/go.sum index ff1dd9f4b..2ed2de628 100644 --- a/go.sum +++ b/go.sum @@ -44,8 +44,9 @@ github.com/CycloneDX/cyclonedx-go v0.7.0 h1:jNxp8hL7UpcvPDFXjY+Y1ibFtsW+e5zyF9Qo github.com/CycloneDX/cyclonedx-go v0.7.0/go.mod h1:W5Z9w8pTTL+t+yG3PCiFRGlr8PUlE0pGWzKSJbsyXkg= 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= @@ -201,8 +202,8 @@ github.com/jfrog/build-info-go v1.9.0 h1:gLxBfp4C6pVz+bKTmsqwFGZAueVMuzGw+/M9HZg github.com/jfrog/build-info-go v1.9.0/go.mod h1:dQ8OKddrbgtO3jK9uLYoqmRGNEjuDuNXV0bSRdpeTCI= 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-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-client-go v1.28.1-0.20230403150018-9014235c59f5 h1:YBkUjzhXd1GS/iK1e4PonUyTqxZtbPsrRZ/2XaPZpHo= +github.com/jfrog/jfrog-client-go v1.28.1-0.20230403150018-9014235c59f5/go.mod h1:sBY4Z1nUXmacN+rwFkzALfS11fsZ/14nmxL7gbjULhQ= 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/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= @@ -392,6 +393,7 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/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/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -453,6 +455,7 @@ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/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-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -587,6 +590,7 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= 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= diff --git a/plugins/components/conversionlayer.go b/plugins/components/conversionlayer.go index cbd913fde..9b1926e3e 100644 --- a/plugins/components/conversionlayer.go +++ b/plugins/components/conversionlayer.go @@ -85,14 +85,14 @@ func createEnvVarsSummary(cmd Command) string { if i > 0 { summary += "\n" } - summary = "\t" + env.Name + "\n" + summary += "\t" + env.Name + "\n" if env.Default != "" { summary += "\t\t[Default: " + env.Default + "]\n" } summary += "\t\t" + env.Description envVarsSummary = append(envVarsSummary, summary) } - return strings.Join(envVarsSummary[:], "\n\n") + return strings.Join(envVarsSummary[:], "\n") } func convertFlags(cmd Command) ([]cli.Flag, error) { diff --git a/xray/audit/java/gradle.go b/xray/audit/java/gradle.go index 203a375af..9abe917ee 100644 --- a/xray/audit/java/gradle.go +++ b/xray/audit/java/gradle.go @@ -14,7 +14,12 @@ const gradlew = "gradlew" func buildGradleDependencyTree(excludeTestDeps, useWrapper, ignoreConfigFile bool, gradleConfigParams map[string]any) (dependencyTree []*services.GraphNode, err error) { buildConfiguration, cleanBuild := createBuildConfiguration("audit-gradle") - defer cleanBuild(err) + defer func() { + e := cleanBuild() + if err == nil { + err = e + } + }() err = runGradle(buildConfiguration, excludeTestDeps, useWrapper, ignoreConfigFile, gradleConfigParams) if err != nil { diff --git a/xray/audit/java/javautils.go b/xray/audit/java/javautils.go index e2293e788..91b920a93 100644 --- a/xray/audit/java/javautils.go +++ b/xray/audit/java/javautils.go @@ -25,21 +25,14 @@ type DependencyTreeParams struct { JavaProps map[string]any } -func createBuildConfiguration(buildName string) (*artifactoryUtils.BuildConfiguration, func(err error)) { +func createBuildConfiguration(buildName string) (*artifactoryUtils.BuildConfiguration, func() error) { buildConfiguration := artifactoryUtils.NewBuildConfiguration(buildName, strconv.FormatInt(time.Now().Unix(), 10), "", "") - return buildConfiguration, func(err error) { - buildName, err := buildConfiguration.GetBuildName() - if err != nil { - return - } + return buildConfiguration, func() error { buildNumber, err := buildConfiguration.GetBuildNumber() if err != nil { - return - } - err = artifactoryUtils.RemoveBuildDir(buildName, buildNumber, buildConfiguration.GetProject()) - if err != nil { - return + return err } + return artifactoryUtils.RemoveBuildDir(buildName, buildNumber, buildConfiguration.GetProject()) } } diff --git a/xray/audit/java/mvn.go b/xray/audit/java/mvn.go index b23f4288e..682bd5946 100644 --- a/xray/audit/java/mvn.go +++ b/xray/audit/java/mvn.go @@ -12,7 +12,12 @@ import ( func buildMvnDependencyTree(insecureTls, ignoreConfigFile, useWrapper bool, mvnProps map[string]any) (modules []*services.GraphNode, err error) { buildConfiguration, cleanBuild := createBuildConfiguration("audit-mvn") - defer cleanBuild(err) + defer func() { + e := cleanBuild() + if err == nil { + err = e + } + }() err = runMvn(buildConfiguration, insecureTls, ignoreConfigFile, useWrapper, mvnProps) if err != nil {