plugins {
    id "com.jfrog.bintray" version "1.1"
    id "com.github.jruby-gradle.base" version "0.1.5"
    id "java"
    id "checkstyle"
    id "jacoco"
    id "findbugs"
}
import com.github.jrubygradle.JRubyExec
repositories {
    mavenCentral()
    jcenter()
}
configurations {
    provided
}

version = "0.4.0"

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    compile  "org.embulk:embulk-core:0.9.7"
    provided("org.embulk:embulk-core:0.9.7")
    compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.6'
    testCompile "junit:junit:4.+"
    testCompile "org.embulk:embulk-core:0.9.7:tests"
    testCompile "org.embulk:embulk-test:0.9.7"
    testCompile "org.mockito:mockito-core:2.+"
}

task classpath(type: Copy, dependsOn: ["jar"]) {
    doFirst { file("classpath").deleteDir() }
    from (configurations.runtime - configurations.provided + files(jar.archivePath))
    into "classpath"
}
clean { delete "classpath" }

jacocoTestReport {
    group = "Reporting"
    reports {
        xml.enabled false
        csv.enabled false
        html.destination file("${buildDir}/reports/coverage")
    }
}

tasks.withType(FindBugs) {
    reports {
        xml.enabled = false
        html.enabled = true
    }
}

checkstyle {
    configFile = file("${project.rootDir}/config/checkstyle/checkstyle.xml")
    toolVersion = '6.14.1'
}
checkstyleMain {
    configFile = file("${project.rootDir}/config/checkstyle/default.xml")
    ignoreFailures = false
}
checkstyleTest {
    configFile = file("${project.rootDir}/config/checkstyle/default.xml")
    ignoreFailures = false
}
task checkstyle(type: Checkstyle) {
    classpath = sourceSets.main.output + sourceSets.test.output
    source = sourceSets.main.allJava + sourceSets.test.allJava
}

task gem(type: JRubyExec, dependsOn: ["gemspec", "classpath"]) {
    jrubyArgs "-rrubygems/gem_runner", "-eGem::GemRunner.new.run(ARGV)", "build"
    script "${project.name}.gemspec"
    doLast { ant.move(file: "${project.name}-${project.version}.gem", todir: "pkg") }
}

task gemPush(type: JRubyExec, dependsOn: ["gem"]) {
    jrubyArgs "-rrubygems/gem_runner", "-eGem::GemRunner.new.run(ARGV)", "push"
    script "pkg/${project.name}-${project.version}.gem"
}

task "package"(dependsOn: ["gemspec", "classpath"]) {
    doLast {
        println "> Build succeeded."
        println "> You can run embulk with '-L ${file(".").absolutePath}' argument."
    }
}

task gemspec {
    ext.gemspecFile = file("${project.name}.gemspec")
    inputs.file "build.gradle"
    outputs.file gemspecFile
    doLast { gemspecFile.write($/
Gem::Specification.new do |spec|
  spec.name          = "${project.name}"
  spec.version       = "${project.version}"
  spec.authors       = ["hieu.duong"]
  spec.summary       = %[Zendesk input plugin for Embulk]
  spec.description   = %[Loads records from Zendesk.]
  spec.email         = ["hieu.duong@treasure-data.com"]
  spec.licenses      = ["MIT"]
  spec.homepage      = "https://github.com/treasure-data/embulk-input-zendesk"

  spec.files         = `git ls-files`.split("\n") + Dir["classpath/*.jar"]
  spec.test_files    = spec.files.grep(%r"^(test|spec)/")
  spec.require_paths = ["lib"]

  #spec.add_dependency 'YOUR_GEM_DEPENDENCY', ['~> YOUR_GEM_DEPENDENCY_VERSION']
  spec.add_development_dependency 'bundler', ['~> 1.0']
  spec.add_development_dependency 'rake', ['~> 12.0']
end
/$)
    }
}
clean { delete "${project.name}.gemspec" }

test {
    testLogging {
        events "passed", "skipped", "failed"
    }
}