github.com/jfrog/jfrog-cli-core/v2@v2.51.0/general/cisetup/utils.go (about) 1 package cisetup 2 3 import ( 4 "fmt" 5 "strings" 6 7 "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" 8 ) 9 10 const ( 11 m2pathCmd = "MVN_PATH=`which mvn` && export M2_HOME=`readlink -f $MVN_PATH | xargs dirname | xargs dirname`" 12 jfrogCliRtPrefix = "jfrog rt" 13 jfrogCliConfig = "jfrog c add" 14 jfrogCliOldConfig = "jfrog rt c" 15 jfrogCliBce = "jfrog rt bce" 16 jfrogCliBag = "jfrog rt bag" 17 jfrogCliBp = "jfrog rt bp" 18 buildNameEnvVar = "JFROG_CLI_BUILD_NAME" 19 buildNumberEnvVar = "JFROG_CLI_BUILD_NUMBER" 20 buildUrlEnvVar = "JFROG_CLI_BUILD_URL" 21 buildStatusEnvVar = "JFROG_BUILD_STATUS" 22 runNumberEnvVar = "$run_number" 23 stepUrlEnvVar = "$step_url" 24 updateCommitStatusCmd = "update_commit_status" 25 26 gradleConfigCmdName = "gradle-config" 27 npmConfigCmdName = "npm-config" 28 mvnConfigCmdName = "mvn-config" 29 serverIdResolve = "server-id-resolve" 30 repoResolveReleases = "repo-resolve-releases" 31 repoResolveSnapshots = "repo-resolve-snapshots" 32 repoResolve = "repo-resolve" 33 34 passResult = "PASS" 35 failResult = "FAIL" 36 37 urlFlag = "url" 38 rtUrlFlag = "artifactory-url" 39 userFlag = "user" 40 41 // Replace exe (group 2) with "jfrog rt exe" while maintaining preceding (if any) and succeeding spaces. 42 mvnGradleRegexp = `(^|\s)(mvn|gradle)(\s)` 43 mvnGradleRegexpReplacement = `${1}jfrog rt ${2}${3}` 44 npmInstallRegexp = `(^|\s)(npm i|npm install)(\s|$)` 45 npmInstallRegexpReplacement = `${1}jfrog rt npmi${3}` 46 npmCiRegexp = `(^|\s)(npm ci)(\s|$)` 47 npmCiRegexpReplacement = `${1}jfrog rt npmci${3}` 48 49 cmdAndOperator = " &&\n" 50 ) 51 52 func getFlagSyntax(flagName string) string { 53 return fmt.Sprintf("--%s", flagName) 54 } 55 56 func getCdToResourceCmd(gitResourceName string) string { 57 return fmt.Sprintf("cd $res_%s_resourcePath", gitResourceName) 58 } 59 60 func getIntDetailForCmd(intName, detail string) string { 61 return fmt.Sprintf("$int_%s_%s", intName, detail) 62 } 63 64 // Returns the JFrog CLI config command according to the given server details. 65 func getJfrogCliConfigCmd(rtIntName, serverId string, useOld bool) string { 66 usedConfigCmd := jfrogCliConfig 67 usedUrlFlag := rtUrlFlag 68 if useOld { 69 usedConfigCmd = jfrogCliOldConfig 70 usedUrlFlag = urlFlag 71 } 72 return strings.Join([]string{ 73 usedConfigCmd, serverId, 74 getFlagSyntax(usedUrlFlag), getIntDetailForCmd(rtIntName, urlFlag), 75 getFlagSyntax(userFlag), getIntDetailForCmd(rtIntName, userFlag), 76 "--enc-password=false", 77 }, " ") 78 } 79 80 // Returns an array of JFrog CLI config commands according to the given CiSetupData. 81 func getTechConfigsCommands(serverId string, setM2ForMaven bool, data *CiSetupData) []string { 82 var configs []string 83 switch data.BuiltTechnology.Type { 84 case coreutils.Maven: 85 if setM2ForMaven { 86 configs = append(configs, m2pathCmd) 87 } 88 configs = append(configs, getMavenConfigCmd(serverId, data.BuiltTechnology.VirtualRepo)) 89 90 case coreutils.Gradle: 91 configs = append(configs, getBuildToolConfigCmd(gradleConfigCmdName, serverId, data.BuiltTechnology.VirtualRepo)) 92 93 case coreutils.Npm: 94 configs = append(configs, getBuildToolConfigCmd(npmConfigCmdName, serverId, data.BuiltTechnology.VirtualRepo)) 95 96 } 97 return configs 98 } 99 100 // Converts build tools commands to run via JFrog CLI. 101 func convertBuildCmd(data *CiSetupData) (buildCmd string, err error) { 102 commandsArray := []string{} 103 switch data.BuiltTechnology.Type { 104 case coreutils.Npm: 105 buildCmd, err = replaceCmdWithRegexp(data.BuiltTechnology.BuildCmd, npmInstallRegexp, npmInstallRegexpReplacement) 106 if err != nil { 107 return "", err 108 } 109 buildCmd, err = replaceCmdWithRegexp(buildCmd, npmCiRegexp, npmCiRegexpReplacement) 110 if err != nil { 111 return "", err 112 } 113 case coreutils.Maven, coreutils.Gradle: 114 buildCmd, err = replaceCmdWithRegexp(data.BuiltTechnology.BuildCmd, mvnGradleRegexp, mvnGradleRegexpReplacement) 115 if err != nil { 116 return "", err 117 } 118 } 119 commandsArray = append(commandsArray, buildCmd) 120 return strings.Join(commandsArray, cmdAndOperator), nil 121 } 122 123 // Returns Maven's config command according to given server and repo information. 124 func getMavenConfigCmd(serverId, repo string) string { 125 return strings.Join([]string{ 126 jfrogCliRtPrefix, mvnConfigCmdName, 127 getFlagSyntax(serverIdResolve), serverId, 128 getFlagSyntax(repoResolveReleases), repo, 129 getFlagSyntax(repoResolveSnapshots), repo, 130 }, " ") 131 } 132 133 // Returns build tool's (except Maven) config command according to given server and repo information. 134 func getBuildToolConfigCmd(configCmd, serverId, repo string) string { 135 return strings.Join([]string{ 136 jfrogCliRtPrefix, configCmd, 137 getFlagSyntax(serverIdResolve), serverId, 138 getFlagSyntax(repoResolve), repo, 139 }, " ") 140 } 141 142 // Returns a string of environment variable export command. 143 // key - The variable name. 144 // value - the value to be set. 145 func getExportCmd(key, value string) string { 146 return fmt.Sprintf("export %s=%s", key, value) 147 }