plugins {
  id 'java-library'
  id 'maven' // TODO: migrate to 'maven-publish'
  id 'signing'
  id 'checkstyle'
  id 'org.sonarqube' version '3.0'
  id 'net.saliman.cobertura' version '4.0.0'
}

group = 'net.named-data.jndn-extra'
version = '1.2.0'

repositories {
  mavenLocal()
  jcenter()
  mavenCentral()
  maven {
    url 'https://oss.sonatype.org/content/repositories/releases'
  }
}

dependencies {
  api 'net.named-data:jndn:0.24'

  testImplementation 'junit:junit:4.12'
  testRuntimeOnly 'org.slf4j:slf4j-api:1.7.30'
}

java {
  sourceCompatibility = JavaVersion.VERSION_1_8
  targetCompatibility = JavaVersion.VERSION_1_8
  withJavadocJar()
  withSourcesJar()
}

tasks.withType(JavaCompile) {
  options.deprecation = true
  options.encoding = 'UTF-8'
}

tasks.withType(Javadoc) {
  options.addBooleanOption('Xdoclint:none', true)
}

tasks.withType(Test) {
  outputs.upToDateWhen { false }
  testLogging {
    events "passed", "failed", "skipped"
    exceptionFormat "full"
  }
}

checkstyle {
  toolVersion '8.23'
}
checkstyleTest {
  configFile file('config/checkstyle/checkstyle-test.xml')
}

cobertura {
  coverageFormats = ['html', 'xml']
}

artifacts {
  archives javadocJar, sourcesJar
}

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

uploadArchives {
  repositories {
    mavenDeployer {
      beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }

      repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
        try {
          authentication(userName: ossrhUsername, password: ossrhPassword)
        }
        catch (Exception e) {
        }
      }

      snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
        try {
          authentication(userName: ossrhUsername, password: ossrhPassword)
        }
        catch (Exception e) {
        }
      }

      pom.project {
        name 'jndn-mock'
        packaging 'jar'
        description 'Tools for testing NDN Java code without using network IO'
        url 'https://github.com/named-data/jndn-mock'

        scm {
          connection 'scm:git:https://github.com/named-data/jndn-mock.git'
          developerConnection 'scm:git:ssh://git@github.com/named-data/jndn-mock.git'
          url 'https://github.com/named-data/jndn-mock'
        }

        licenses {
          license {
            name 'GNU Lesser General Public License, Version 3.0+'
            url 'https://www.gnu.org/licenses/lgpl-3.0.html'
          }
        }

        developers {
          developer {
            id 'andrewbrown'
            name 'Andrew Brown'
            url 'https://github.com/andrewsbrown'
          }
          developer {
            id 'cawka'
            name 'Alexander Afanasyev'
            email 'aa@cs.ucla.edu'
          }
        }
      }
    }
  }
}
