/*
 * R3 Proprietary and Confidential
 *
 * Copyright (c) 2018 R3 Limited.  All rights reserved.
 *
 * The intellectual and technical concepts contained herein are proprietary to R3 and its suppliers and are protected by trade secret law.
 *
 * Distribution of this file or any portion thereof via any medium without the express permission of R3 is strictly prohibited.
 */

import net.corda.plugins.Cordform

apply plugin: 'java'
apply plugin: 'kotlin'
apply plugin: 'idea'
apply plugin: 'net.corda.plugins.quasar-utils'
apply plugin: 'net.corda.plugins.publish-utils'
apply plugin: 'net.corda.plugins.cordapp'
apply plugin: 'net.corda.plugins.cordformation'
apply plugin: 'maven-publish'

configurations {
    integrationTestCompile.extendsFrom testCompile
    integrationTestRuntime.extendsFrom testRuntime
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    testCompile "junit:junit:$junit_version"

    // Corda integration dependencies
    cordaCompile project(path: ":node:capsule", configuration: 'runtimeArtifacts')
    cordaCompile project(path: ":webserver:webcapsule", configuration: 'runtimeArtifacts')
    cordaCompile project(':core')
    cordaCompile project(':client:jfx')
    cordaCompile project(':client:rpc')
    cordaCompile project(':node-driver')
}

idea {
    module {
        downloadJavadoc = true // defaults to false
        downloadSources = true
    }
}

publishing {
    publications {
        jarAndSources(MavenPublication) {
            from components.java
            artifactId 'notarydemo'

            artifact sourceJar
            artifact javadocJar
        }
    }
}

task deployNodes(dependsOn: ['deployNodesSingle', 'deployNodesRaft', 'deployNodesBFT', 'deployNodesCustom'])

task deployNodesSingle(type: Cordform, dependsOn: 'jar') {
    definitionClass = 'net.corda.notarydemo.SingleNotaryCordform'
}

task deployNodesCustom(type: Cordform, dependsOn: 'jar') {
    definitionClass = 'net.corda.notarydemo.CustomNotaryCordform'
}

task deployNodesRaft(type: Cordform, dependsOn: 'jar') {
    definitionClass = 'net.corda.notarydemo.RaftNotaryCordform'
}

task deployNodesBFT(type: Cordform, dependsOn: 'jar') {
    definitionClass = 'net.corda.notarydemo.BFTNotaryCordform'
}

task notarise(type: JavaExec) {
    classpath = sourceSets.main.runtimeClasspath
    main = 'net.corda.notarydemo.NotariseKt'
}

jar {
    manifest {
        attributes(
                'Automatic-Module-Name': 'net.corda.samples.demos.notary'
        )
    }
}