name.remal.gradle_plugins.dsl.extensions.org.gradle.api.artifacts.dsl.RepositoryHandler.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Show all versions of gradle-plugins-kotlin-dsl Show documentation
Remal Gradle plugins: gradle-plugins-kotlin-dsl
package name.remal.gradle_plugins.dsl.extensions
import name.remal.escapeRegex
import org.gradle.api.artifacts.dsl.RepositoryHandler
import org.gradle.api.artifacts.repositories.MavenArtifactRepository
import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.BINTRAY_JCENTER_URL
import org.gradle.api.internal.artifacts.dsl.DefaultRepositoryHandler.DEFAULT_BINTRAY_JCENTER_REPO_NAME
val RepositoryHandler.hasRepositoryWithDynamicVersionsSupport: Boolean
get() = any { repo ->
if (repo is MavenArtifactRepository) {
if (repo.url.scheme == "http" || repo.url.scheme == "https") {
if (repo.url.host == "jcenter.bintray.com"
|| repo.url.host == "bintray.com"
|| repo.url.host == "oss.jfrog.org"
|| repo.url.host == "repo.maven.apache.org"
|| repo.url.host == "oss.sonatype.org"
) {
return@any true
}
}
}
return@any false
}
private val jcenterRepositoryNameRegex = Regex(escapeRegex(DEFAULT_BINTRAY_JCENTER_REPO_NAME) + "\\d*")
private val jcenterRepositoryUrl = BINTRAY_JCENTER_URL
val RepositoryHandler.isJCenterAdded: Boolean
get() = any {
jcenterRepositoryNameRegex.matches(it.name)
&& it is MavenArtifactRepository && it.url.toString() == jcenterRepositoryUrl
}
fun RepositoryHandler.jcenterIfNotAdded() {
if (isJCenterAdded) return
jcenter()
}
fun RepositoryHandler.jcenterIfNotAdded(repositoryName: String, configurer: (repository: MavenArtifactRepository) -> Unit = {}) {
if (isJCenterAdded) return
if (jcenterRepositoryNameRegex.matches(repositoryName)) {
throw IllegalArgumentException("Repository name can't match '$jcenterRepositoryNameRegex'")
}
maven {
it.name = repositoryName
it.setUrl(BINTRAY_JCENTER_URL)
it.apply(configurer)
}
}