apply plugin: 'maven-publish'
apply plugin: 'signing'

final isSnapshot = version.contains('SNAPSHOT')
// https://github.com/johnrengelman/shadow/issues/586#issuecomment-708375599
components.java.withVariantsFromConfiguration(configurations.shadowRuntimeElements) {
    skip()
}
publishing {
    repositories {
        maven {
            url = (isSnapshot
                    ? project.properties.getOrDefault('SNAPSHOT_REPOSITORY_URL', 'https://oss.sonatype.org/content/repositories/snapshots/')
                    : project.properties.getOrDefault('RELEASE_REPOSITORY_URL', 'https://oss.sonatype.org/service/local/staging/deploy/maven2/')
            )
            credentials {
                username = project.properties.get('SONATYPE_NEXUS_USERNAME')
                password = project.properties.get('SONATYPE_NEXUS_PASSWORD')
            }
        }
    }
}

signing {

    // Use external gpg cmd.  This makes it easy to use gpg-agent,
    // to avoid being prompted for a password once per artifact.
    useGpgCmd()

    // If anything about signing is misconfigured, fail loudly rather than quietly continuing with
    // unsigned artifacts.
    required = true
}

// Only sign releases; snapshots are unsigned.
tasks.withType(Sign).configureEach {
    onlyIf {
        release
    }
}
