/*
 * Copyright 2018 ConsenSys AG.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */

apply plugin: 'java-library'

jar {
  baseName 'pantheon'
  manifest {
    attributes(
      'Specification-Title': baseName,
      'Specification-Version': project.version,
      'Implementation-Title': baseName,
      'Implementation-Version': calculateVersion()
      )
  }
}

dependencies {
  implementation project(':config')
  implementation project(':crypto')
  implementation project(':consensus:common')
  implementation project(':consensus:clique')
  implementation project(':consensus:ibft')
  implementation project(':consensus:ibftlegacy')
  implementation project(':enclave')
  implementation project(':ethereum:blockcreation')
  implementation project(':ethereum:core')
  implementation project(':ethereum:eth')
  implementation project(':ethereum:jsonrpc')
  implementation project(':ethereum:graphql')
  implementation project(':ethereum:permissioning')
  implementation project(':ethereum:p2p')
  implementation project(':ethereum:rlp')
  implementation project(':metrics:core')
  implementation project(':nat')
  implementation project(':services:kvstore')

  implementation 'com.graphql-java:graphql-java'
  implementation 'com.google.guava:guava'
  implementation 'info.picocli:picocli'
  implementation 'io.vertx:vertx-core'
  implementation 'io.vertx:vertx-web'
  implementation 'net.consensys.cava:cava-toml'
  implementation 'org.apache.logging.log4j:log4j-api'
  implementation 'org.springframework.security:spring-security-crypto'
  implementation 'tech.pegasys.pantheon:plugin-api'

  runtime 'org.apache.logging.log4j:log4j-core'
  runtime 'org.apache.logging.log4j:log4j-slf4j-impl'

  testImplementation project(':testutil')
  testImplementation project(path: ':ethereum:core', configuration: 'testSupportArtifacts')

  testImplementation 'com.squareup.okhttp3:okhttp'
  testImplementation 'com.google.auto.service:auto-service'
  testImplementation 'junit:junit'
  testImplementation 'org.assertj:assertj-core'
  testImplementation 'org.awaitility:awaitility'
  testImplementation 'org.mockito:mockito-core'
  testImplementation 'org.apache.commons:commons-text'
}

task writeInfoFile(type: ProjectPropertiesFile) {
  destPackage = "tech.pegasys.pantheon"
  addString("clientIdentity", rootProject.name)
  addVersion("version", "clientIdentity")
}

compileJava.dependsOn(writeInfoFile)

task testJar(type: Jar) {
  archiveName 'testPlugins.jar'
  manifest {
    attributes(
      'Specification-Title': baseName,
      'Specification-Version': project.version,
      'Implementation-Title': baseName,
      'Implementation-Version': calculateVersion()
      )
  }
  archiveClassifier = 'tests'
  from sourceSets.test.output
}

configurations { testArtifacts }

artifacts { testArtifacts testJar }
