apply plugin: 'maven'
apply plugin: 'signing'

def isReleaseBuild() {
    return version.contains("SNAPSHOT") == false
}

def getMavenRepositoryUrl() {
    return hasProperty('repositoryUrl') ? property('repositoryUrl') : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}

def getMavenRepositoryUsername() {
    return hasProperty('sonatypeUsername') ? property('sonatypeUsername') : ""
}

def getMavenRepositoryPassword() {
    return hasProperty('sonatypePassword') ? property('sonatypePassword') : ""
}

afterEvaluate { project ->

    signing {
        required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
        sign configurations.archives
    }

    uploadArchives {
        configuration = configurations.archives
        repositories.mavenDeployer {
            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

            repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
                authentication(userName: getMavenRepositoryUsername(), password: getMavenRepositoryPassword())
            }

            pom.project {
                name 'SubsamplingScaleImageView'
                packaging 'aar'
                description 'Highly configurable, easily extendable deep zoom view for displaying huge images without loss of detail. Perfect for photo galleries, maps, building plans etc.'
                url 'https://github.com/davemorrissey/subsampling-scale-image-view'

                scm {
                    url 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
                    connection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
                    developerConnection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
                }

                licenses {
                    license {
                        name 'The Apache Software License, Version 2.0'
                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        distribution 'repo'
                    }
                }

                developers {
                    developer {
                        id 'davemorrissey'
                        name 'Dave Morrissey'
                    }
                }
            }
        }
    }

    task androidJavadocs(type: Javadoc) {
        onlyIf { gradle.taskGraph.hasTask("uploadArchives") }
        source = android.sourceSets.main.java.sourceFiles
        destinationDir = rootProject.file("docs/javadoc")
        classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
        classpath += configurations.compile
        classpath += configurations.javadocs
        options.noTimestamp = true
        options.links = ['https://developer.android.com/reference/']
    }

    task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
        classifier = 'javadoc'
        from androidJavadocs.destinationDir
    }

    task androidSourcesJar(type: Jar) {
        classifier = 'sources'
        from android.sourceSets.main.java.sourceFiles
    }

    artifacts {
        archives androidSourcesJar
        archives androidJavadocsJar
    }

}
