apply plugin: 'maven-publish'

def artifactoryURL = project.properties["SKYSCANNER_ARTIFACTORY_MAVEN_URL"]?.toString()

task sourceJar(type: Jar) {
    from android.sourceSets.main.java.srcDirs
    classifier "source"
}

def localProperties = new Properties()
if (rootProject.file("../android/local.properties").exists()) {
    localProperties.load(rootProject.file("../android/local.properties").newDataInputStream())
}

afterEvaluate { project ->

    project.ext.getJFrogUsername = {
        def result = localProperties.getProperty("SKYSCANNER_ARTIFACTORY_OWNER")
        if (result == null) {
            return ""
        }
        return result
    }

    project.ext.getJFrogPassword = {
        def result = localProperties.getProperty("SKYSCANNER_ARTIFACTORY_TOKEN")
        if (result == null) {
            return ""
        }
        return result
    }

    publishing {
        publications {
            maven(MavenPublication) {
                groupId group
                artifactId project.name
                version version
                description description

                artifact bundleReleaseAar
                artifact sourceJar

                pom.withXml {

                    def dependenciesNode = asNode().appendNode('dependencies')
                    //Iterate over the compile dependencies (we don't want the test ones), adding a <dependency> node for each
                    project.configurations.implementation.allDependencies.each {
                        if (it.group != null && (it.name != null || "unspecified" == it.name) && it.version != null) {
                            def dependencyNode = dependenciesNode.appendNode('dependency')
                            dependencyNode.appendNode('groupId', it.group)
                            dependencyNode.appendNode('artifactId', it.name)
                            dependencyNode.appendNode('version', it.version)
                        }
                    }
                }
            }
        }

        repositories {
            maven {
                url "$artifactoryURL"
                credentials {
                    username "${project.getJFrogUsername()}"
                    password "${project.getJFrogPassword()}"
                }
            }
        }
    }

    task checkMavenCredentials(type: Exec) {
        outputs.upToDateWhen { false }
        workingDir './'
        commandLine(['curl',
                     '--silent',
                     '--fail',
                     '-I',
                     '-u',
                     "${project.getJFrogUsername()}:${project.getJFrogPassword()}",
                     "$artifactoryURL"])
    }
}
