ext {
    commonsio_version = '2.6'
    cucumber_version = '1.2.5'
    crash_version = 'cce5a00f114343c1145c1d7756e1dd6df3ea984e'
    docker_client_version = '8.11.0'
}

group 'net.corda.behave'

apply plugin: 'kotlin'

sourceSets {
    behave {
        java {
            compileClasspath += main.output
            runtimeClasspath += main.output
            srcDirs = ["src/main/kotlin", "src/scenario/kotlin"]
        }
        resources.srcDir file('src/scenario/resources')
    }
}

configurations {
    behaveCompile.extendsFrom testCompile
    behaveRuntime.extendsFrom testRuntime
}

dependencies {

    // Library

    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

    compile("com.github.corda.crash:crash.shell:$crash_version") {
        exclude group: "org.slf4j", module: "slf4j-jdk14"
        exclude group: "org.bouncycastle"
    }

    compile("com.github.corda.crash:crash.connectors.ssh:$crash_version") {
        exclude group: "org.slf4j", module: "slf4j-jdk14"
        exclude group: "org.bouncycastle"
    }

    compile "org.slf4j:log4j-over-slf4j:$slf4j_version"
    compile "org.slf4j:jul-to-slf4j:$slf4j_version"
    compile "org.slf4j:jcl-over-slf4j:$slf4j_version"
    compile "org.apache.logging.log4j:log4j-slf4j-impl:$log4j_version"
    compile "org.apache.logging.log4j:log4j-core:$log4j_version"

    // JOptSimple: command line option parsing
    compile "net.sf.jopt-simple:jopt-simple:$jopt_simple_version"

    // ClassGraph: classpath scanning
    compile "io.github.classgraph:classgraph:$class_graph_version"

    compile "commons-io:commons-io:$commonsio_version"
    compile "com.spotify:docker-client:$docker_client_version"
    compile "io.reactivex:rxjava:$rxjava_version"

    compile project(':finance:contracts')
    compile project(':finance:workflows')
    compile project(':node-api')
    compile project(':client:rpc')

    // Unit Tests

    testCompile "junit:junit:$junit_version"
    testCompile "org.assertj:assertj-core:$assertj_version"

    // Scenarios / End-to-End Tests

    behaveCompile "info.cukes:cucumber-java8:$cucumber_version"
    behaveCompile "info.cukes:cucumber-junit:$cucumber_version"
    behaveCompile "info.cukes:cucumber-picocontainer:$cucumber_version"
}

test {
    testLogging.showStandardStreams = true
}

task behaveJar(type: Jar) {
    baseName "corda-behave"
    from sourceSets.behave.output
    from {
        configurations.behaveCompile.collect {
            it.isDirectory() ? it : zipTree(it)
        }
    }
    zip64 true
    exclude("features/**")
    exclude("scripts/**")
    exclude("META-INF/*.DSA")
    exclude("META-INF/*.RSA")
    exclude("META-INF/*.SF")
    manifest {
        attributes 'Main-Class': 'net.corda.behave.scenarios.ScenarioRunner'
    }
}