github.com/jfrog/jfrog-cli-core/v2@v2.51.0/general/project/repoutils.go (about) 1 package project 2 3 import ( 4 rtUtils "github.com/jfrog/jfrog-cli-core/v2/artifactory/utils" 5 "github.com/jfrog/jfrog-cli-core/v2/utils/config" 6 "github.com/jfrog/jfrog-cli-core/v2/utils/coreutils" 7 8 "github.com/jfrog/jfrog-client-go/artifactory" 9 "github.com/jfrog/jfrog-client-go/artifactory/services" 10 ) 11 12 const ( 13 Local = "local" 14 Remote = "remote" 15 Virtual = "virtual" 16 RemoteUrl = "url" 17 18 // Defaults Repositories 19 MavenLocalDefaultName = "default-maven-local" 20 MavenRemoteDefaultName = "default-maven-remote" 21 MavenRemoteDefaultUrl = "https://repo.maven.apache.org/maven2" 22 MavenVirtualDefaultName = "default-maven-virtual" 23 GradleLocalDefaultName = "default-gradle-local" 24 GradleRemoteDefaultName = "default-gradle-remote" 25 GradleRemoteDefaultUrl = "https://repo.maven.apache.org/maven2" 26 GradleVirtualDefaultName = "default-gradle-virtual" 27 NpmLocalDefaultName = "default-npm-local" 28 NpmRemoteDefaultName = "default-npm-remote" 29 NpmRemoteDefaultUrl = "https://registry.npmjs.org" 30 NpmVirtualDefaultName = "default-npm-virtual" 31 GoLocalDefaultName = "default-go-local" 32 GoRemoteDefaultName = "default-go-remote" 33 GoRemoteDefaultUrl = "https://gocenter.io/" 34 GoVirtualDefaultName = "default-go-virtual" 35 PypiLocalDefaultName = "default-pypi-local" 36 PypiRemoteDefaultName = "default-pypi-remote" 37 PypiRemoteDefaultUrl = "https://files.pythonhosted.org" 38 PypiVirtualDefaultName = "default-pypi-virtual" 39 NugetLocalDefaultName = "default-nuget-local" 40 NugetRemoteDefaultName = "default-nuget-remote" 41 NugetRemoteDefaultUrl = "https://www.nuget.org/" 42 NugetVirtualDefaultName = "default-nuget-virtual" 43 DockerLocalDefaultName = "default-docker-local" 44 DockerRemoteDefaultName = "default-docker-remote" 45 DockerRemoteDefaultUrl = "https://registry-1.docker.io" 46 DockerVirtualDefaultName = "default-docker-virtual" 47 ) 48 49 var RepoDefaultName = map[coreutils.Technology]map[string]string{ 50 coreutils.Maven: { 51 Local: MavenLocalDefaultName, 52 Remote: MavenRemoteDefaultName, 53 RemoteUrl: MavenRemoteDefaultUrl, 54 Virtual: MavenVirtualDefaultName, 55 }, 56 coreutils.Gradle: { 57 Local: GradleLocalDefaultName, 58 Remote: GradleRemoteDefaultName, 59 RemoteUrl: GradleRemoteDefaultUrl, 60 Virtual: GradleVirtualDefaultName, 61 }, 62 coreutils.Npm: { 63 Local: NpmLocalDefaultName, 64 Remote: NpmRemoteDefaultName, 65 RemoteUrl: NpmRemoteDefaultUrl, 66 Virtual: NpmVirtualDefaultName, 67 }, 68 coreutils.Go: { 69 Local: GoLocalDefaultName, 70 Remote: GoRemoteDefaultName, 71 RemoteUrl: GoRemoteDefaultUrl, 72 Virtual: GoVirtualDefaultName, 73 }, 74 coreutils.Pip: { 75 Local: PypiLocalDefaultName, 76 Remote: PypiRemoteDefaultName, 77 RemoteUrl: PypiRemoteDefaultUrl, 78 Virtual: PypiVirtualDefaultName, 79 }, 80 coreutils.Pipenv: { 81 Local: PypiLocalDefaultName, 82 Remote: PypiRemoteDefaultName, 83 RemoteUrl: PypiRemoteDefaultUrl, 84 Virtual: PypiVirtualDefaultName, 85 }, 86 coreutils.Nuget: { 87 Local: NugetLocalDefaultName, 88 Remote: NugetRemoteDefaultName, 89 RemoteUrl: NugetRemoteDefaultUrl, 90 Virtual: NugetVirtualDefaultName, 91 }, 92 coreutils.Dotnet: { 93 Local: NugetLocalDefaultName, 94 Remote: NugetRemoteDefaultName, 95 RemoteUrl: NugetRemoteDefaultUrl, 96 Virtual: NugetVirtualDefaultName, 97 }, 98 coreutils.Docker: { 99 Local: DockerLocalDefaultName, 100 Remote: DockerRemoteDefaultName, 101 RemoteUrl: DockerRemoteDefaultUrl, 102 Virtual: DockerVirtualDefaultName, 103 }, 104 } 105 106 func CreateDefaultLocalRepo(technologyType coreutils.Technology, serverId string) error { 107 servicesManager, err := getServiceManager(serverId) 108 if err != nil { 109 return err 110 } 111 params := services.NewLocalRepositoryBaseParams() 112 params.PackageType = technologyType.GetPackageType() 113 params.Key = RepoDefaultName[technologyType][Local] 114 // Check if default repository already exists 115 if exists, err := servicesManager.IsRepoExists(params.Key); exists { 116 return err 117 } 118 if err != nil { 119 return err 120 } 121 return servicesManager.CreateLocalRepositoryWithParams(params) 122 } 123 124 func createDefaultRemoteNugetRepo(serverId string, baseParams services.RemoteRepositoryBaseParams) error { 125 servicesManager, err := getServiceManager(serverId) 126 if err != nil { 127 return err 128 } 129 params := services.NewNugetRemoteRepositoryParams() 130 params.RemoteRepositoryBaseParams = baseParams 131 params.DownloadContextPath = "api/v2/package" 132 params.FeedContextPath = "api/v2" 133 return servicesManager.CreateRemoteRepository().Nuget(params) 134 } 135 136 func CreateDefaultRemoteRepo(technologyType coreutils.Technology, serverId string) error { 137 servicesManager, err := getServiceManager(serverId) 138 if err != nil { 139 return err 140 } 141 params := services.NewRemoteRepositoryBaseParams() 142 params.PackageType = technologyType.GetPackageType() 143 params.Key = RepoDefaultName[technologyType][Remote] 144 params.Url = RepoDefaultName[technologyType][RemoteUrl] 145 // Check if default repository already exists 146 if exists, err := servicesManager.IsRepoExists(params.Key); exists { 147 return err 148 } 149 if err != nil { 150 return err 151 } 152 // NuGet specific case, due to required DownloadContextPath param by Artifactory 153 if technologyType == coreutils.Nuget || technologyType == coreutils.Dotnet { 154 return createDefaultRemoteNugetRepo(serverId, params) 155 } 156 return servicesManager.CreateRemoteRepositoryWithParams(params) 157 } 158 159 func CreateDefaultVirtualRepo(technologyType coreutils.Technology, serverId string) error { 160 servicesManager, err := getServiceManager(serverId) 161 if err != nil { 162 return err 163 } 164 params := services.NewVirtualRepositoryBaseParams() 165 params.PackageType = technologyType.GetPackageType() 166 params.Key = RepoDefaultName[technologyType][Virtual] 167 params.Repositories = []string{RepoDefaultName[technologyType][Local], RepoDefaultName[technologyType][Remote]} 168 params.DefaultDeploymentRepo = RepoDefaultName[technologyType][Local] 169 // Check if default repository already exists 170 if exists, err := servicesManager.IsRepoExists(params.Key); exists { 171 return err 172 } 173 if err != nil { 174 return err 175 } 176 return servicesManager.CreateVirtualRepositoryWithParams(params) 177 } 178 179 func getServiceManager(serverId string) (artifactory.ArtifactoryServicesManager, error) { 180 serviceDetails, err := config.GetSpecificConfig(serverId, true, false) 181 if err != nil { 182 return nil, err 183 } 184 return rtUtils.CreateServiceManager(serviceDetails, -1, 0, false) 185 186 }