All Downloads are FREE. Search and download functionalities are using the official Maven repository.

name.remal.gradle_plugins.dsl.extensions.org.gradle.api.artifacts.dsl.RepositoryHandler.kt Maven / Gradle / Ivy

There is a newer version: 1.9.2
Show newest version
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)
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy