github.com/jfrog/jfrog-cli-core/v2@v2.51.0/utils/gradle/utils.go (about)

     1  package gradleutils
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/jfrog/jfrog-cli-core/v2/common/build"
     6  	"github.com/jfrog/jfrog-cli-core/v2/common/project"
     7  	"github.com/jfrog/jfrog-cli-core/v2/utils/config"
     8  	"github.com/jfrog/jfrog-cli-core/v2/utils/coreutils"
     9  	"github.com/jfrog/jfrog-cli-core/v2/utils/dependencies"
    10  	"github.com/jfrog/jfrog-client-go/utils/errorutils"
    11  	"github.com/spf13/viper"
    12  	"path/filepath"
    13  )
    14  
    15  const (
    16  	usePlugin  = "useplugin"
    17  	useWrapper = "usewrapper"
    18  )
    19  
    20  func RunGradle(vConfig *viper.Viper, tasks []string, deployableArtifactsFile string, configuration *build.BuildConfiguration, threads int, disableDeploy bool) error {
    21  	buildInfoService := build.CreateBuildInfoService()
    22  	buildName, err := configuration.GetBuildName()
    23  	if err != nil {
    24  		return err
    25  	}
    26  	buildNumber, err := configuration.GetBuildNumber()
    27  	if err != nil {
    28  		return err
    29  	}
    30  	gradleBuild, err := buildInfoService.GetOrCreateBuildWithProject(buildName, buildNumber, configuration.GetProject())
    31  	if err != nil {
    32  		return errorutils.CheckError(err)
    33  	}
    34  	gradleModule, err := gradleBuild.AddGradleModule("")
    35  	if err != nil {
    36  		return errorutils.CheckError(err)
    37  	}
    38  	props, wrapper, plugin, err := createGradleRunConfig(vConfig, deployableArtifactsFile, threads, disableDeploy)
    39  	if err != nil {
    40  		return err
    41  	}
    42  	dependencyLocalPath, err := getGradleDependencyLocalPath()
    43  	if err != nil {
    44  		return err
    45  	}
    46  	gradleModule.SetExtractorDetails(dependencyLocalPath, filepath.Join(coreutils.GetCliPersistentTempDirPath(), build.PropertiesTempPath), tasks, wrapper, plugin, dependencies.DownloadExtractor, props)
    47  	return coreutils.ConvertExitCodeError(gradleModule.CalcDependencies())
    48  }
    49  
    50  func getGradleDependencyLocalPath() (string, error) {
    51  	dependenciesPath, err := config.GetJfrogDependenciesPath()
    52  	if err != nil {
    53  		return "", err
    54  	}
    55  	return filepath.Join(dependenciesPath, "gradle"), nil
    56  }
    57  
    58  func createGradleRunConfig(vConfig *viper.Viper, deployableArtifactsFile string, threads int, disableDeploy bool) (props map[string]string, wrapper, plugin bool, err error) {
    59  	wrapper = vConfig.GetBool(useWrapper)
    60  	if threads > 0 {
    61  		vConfig.Set(build.ForkCount, threads)
    62  	}
    63  
    64  	if disableDeploy {
    65  		setDeployFalse(vConfig)
    66  	}
    67  	props, err = build.CreateBuildInfoProps(deployableArtifactsFile, vConfig, project.Gradle)
    68  	if err != nil {
    69  		return
    70  	}
    71  	if deployableArtifactsFile != "" {
    72  		// Save the path to a temp file, where buildinfo project will write the deployable artifacts details.
    73  		props[build.DeployableArtifacts] = fmt.Sprint(vConfig.Get(build.DeployableArtifacts))
    74  	}
    75  	plugin = vConfig.GetBool(usePlugin)
    76  	return
    77  }
    78  
    79  func setDeployFalse(vConfig *viper.Viper) {
    80  	vConfig.Set(build.DeployerPrefix+build.DeployArtifacts, "false")
    81  	if vConfig.GetString(build.DeployerPrefix+build.Url) == "" {
    82  		vConfig.Set(build.DeployerPrefix+build.Url, "http://empty_url")
    83  	}
    84  	if vConfig.GetString(build.DeployerPrefix+build.Repo) == "" {
    85  		vConfig.Set(build.DeployerPrefix+build.Repo, "empty_repo")
    86  	}
    87  }