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 {
    !isSnapshot && project.hasProperty("release")
  }
}
