// Copyright 2019 The Nomulus Authors. All Rights Reserved.
//
// 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.

ext {
    // Direct dependencies and compile-time transitive dependencies (i.e.,
    // those flagged as undeclared-dependency by Nebula-lint).
    dependencyList = [
      'args4j:args4j:2.0.26',
      'com.beust:jcommander:1.60',
      'com.google.api:gax:1.60.0',
      'com.google.api.grpc:proto-google-cloud-secretmanager-v1:1.4.0',
      // The two below are needed only for Datastore bulk delete pipeline.
      'com.google.api.grpc:proto-google-cloud-datastore-v1:0.88.9',
      'com.google.api.grpc:proto-google-common-protos:2.1.0',
      'com.google.api-client:google-api-client-java6:1.31.3',
      'com.google.api-client:google-api-client:1.31.3',
      'com.google.api-client:google-api-client-appengine:1.31.3',
      'com.google.api-client:google-api-client-servlet:1.31.3',
      'com.google.apis:google-api-services-admin-directory:directory_v1-rev118-1.25.0',
      'com.google.apis:google-api-services-appengine:v1-rev130-1.25.0',
      'com.google.apis:google-api-services-bigquery:v2-rev459-1.25.0',
      'com.google.apis:google-api-services-cloudkms:v1-rev108-1.25.0',
      'com.google.apis:google-api-services-dataflow:v1b3-rev302-1.25.0',
      'com.google.apis:google-api-services-dns:v2beta1-rev99-1.25.0',
      'com.google.apis:google-api-services-drive:v2-rev393-1.25.0',
      'com.google.apis:google-api-services-groupssettings:v1-rev82-1.25.0',
      'com.google.apis:google-api-services-monitoring:v3-rev540-1.25.0',
      'com.google.apis:google-api-services-sheets:v4-rev612-1.25.0',
      'com.google.apis:google-api-services-storage:v1-rev171-1.25.0',
      'com.google.appengine.tools:appengine-gcs-client:0.8.1',
      'com.google.appengine.tools:appengine-mapreduce:0.9',
      'com.google.appengine.tools:appengine-pipeline:0.2.13',
      'com.google.appengine:appengine-api-1.0-sdk:1.9.86',
      'com.google.appengine:appengine-api-stubs:1.9.86',
      'com.google.appengine:appengine-remote-api:1.9.86',
      'com.google.appengine:appengine-testing:1.9.86',
      'com.google.auth:google-auth-library-credentials:0.24.1',
      'com.google.auth:google-auth-library-oauth2-http:0.24.1',
      'com.google.auto.service:auto-service-annotations:1.0-rc7',
      'com.google.auto.service:auto-service:1.0-rc7',
      'com.google.auto.value:auto-value-annotations:1.7.4',
      'com.google.auto.value:auto-value:1.7.4',
      'com.google.common.html.types:types:1.0.6',
      'com.google.closure-stylesheets:closure-stylesheets:1.5.0',
      // The two below are needed only for Datastore bulk delete pipeline.
      'com.google.cloud.bigdataoss:util:2.1.3',
      'com.google.cloud.datastore:datastore-v1-proto-client:1.6.3',
      'com.google.cloud.sql:jdbc-socket-factory-core:1.2.1',
      'com.google.cloud.sql:postgres-socket-factory:1.2.1',
      'com.google.cloud:google-cloud-core:1.94.3',
      'com.google.cloud:google-cloud-secretmanager:1.4.0',
      'com.google.cloud:google-cloud-storage:1.113.12',
      'com.google.code.findbugs:jsr305:3.0.2',
      'com.google.code.gson:gson:2.8.6',
      'com.google.dagger:dagger-compiler:2.33',
      'com.google.dagger:dagger:2.33',
      'com.google.errorprone:error_prone_annotations:2.5.1',
      'com.google.flogger:flogger-system-backend:0.5.1',
      'com.google.flogger:flogger:0.5.1',
      'com.google.guava:guava-testlib:30.1-jre',
      'com.google.guava:guava:30.1-jre',
      'com.google.gwt:gwt-user:2.9.0',
      'com.google.http-client:google-http-client-appengine:1.39.0',
      'com.google.http-client:google-http-client-jackson2:1.39.0',
      'com.google.http-client:google-http-client:1.39.0',
      'com.google.inject:guice:5.0.1',
      'com.google.javascript:closure-compiler:v20210505',
      'com.google.monitoring-client:contrib:1.0.7',
      'com.google.monitoring-client:metrics:1.0.7',
      'com.google.monitoring-client:stackdriver:1.0.7',
      'com.google.oauth-client:google-oauth-client:1.31.4',
      'com.google.oauth-client:google-oauth-client-appengine:1.31.4',
      'com.google.oauth-client:google-oauth-client-java6:1.31.4',
      'com.google.oauth-client:google-oauth-client-jetty:1.31.4',
      'com.google.oauth-client:google-oauth-client-servlet:1.31.4',
      'com.google.protobuf:protobuf-java:3.13.0',
      'com.google.re2j:re2j:1.6',
      'com.google.template:soy:2021-02-01',
      'com.google.truth.extensions:truth-java8-extension:1.1.2',
      'com.google.truth:truth:1.1.2',
      'com.googlecode.json-simple:json-simple:1.1.1',
      'com.ibm.icu:icu4j:68.2',
      'com.jcraft:jsch:0.1.55',
      'com.squareup:javapoet:1.13.0',
      'com.sun.activation:javax.activation:1.2.0',
      'com.sun.xml.bind:jaxb-impl:2.3.3',
      'com.sun.xml.bind:jaxb-osgi:2.3.3',
      'com.sun.xml.bind:jaxb-xjc:2.3.3',
      'com.thoughtworks.qdox:qdox:1.12.1',
      'com.zaxxer:HikariCP:3.4.5',
      'dnsjava:dnsjava:3.3.1',
      'guru.nidi:graphviz-java-all-j2v8:0.17.0',
      'io.github.classgraph:classgraph:4.8.102',
      'io.github.java-diff-utils:java-diff-utils:4.9',
      'io.netty:netty-buffer:4.1.59.Final',
      'io.netty:netty-codec-http:4.1.59.Final',
      'io.netty:netty-codec:4.1.59.Final',
      'io.netty:netty-common:4.1.59.Final',
      'io.netty:netty-handler:4.1.59.Final',
      'io.netty:netty-tcnative-boringssl-static:2.0.36.Final',
      'io.netty:netty-transport:4.1.59.Final',
      'javax.annotation:javax.annotation-api:1.3.2',
      'javax.annotation:jsr250-api:1.0',
      'javax.inject:javax.inject:1',
      'javax.mail:mail:1.4',
      'javax.persistence:javax.persistence-api:2.2',
      'javax.servlet:servlet-api:2.5',
      'javax.xml.bind:jaxb-api:2.3.0',
      'jline:jline:1.0',
      'joda-time:joda-time:2.9.2',
      'junit:junit:4.13',
      'org.checkerframework:checker-qual:3.9.1',
      'org.junit.jupiter:junit-jupiter-api:5.6.2',
      'org.junit.jupiter:junit-jupiter-engine:5.6.2',
      'org.junit.jupiter:junit-jupiter-migrationsupport:5.6.2',
      'org.junit.jupiter:junit-jupiter-params:5.6.2',
      'org.junit.platform:junit-platform-runner:1.6.2',
      'org.junit.platform:junit-platform-suite-api:1.6.2',
      'org.junit-pioneer:junit-pioneer:0.7.0',
      'org.apache.avro:avro:1.8.2',
      'org.apache.beam:beam-runners-core-construction-java:2.28.0',
      'org.apache.beam:beam-runners-direct-java:2.28.0',
      'org.apache.beam:beam-runners-google-cloud-dataflow-java:2.28.0',
      'org.apache.beam:beam-sdks-java-core:2.28.0',
      'org.apache.beam:beam-sdks-java-extensions-google-cloud-platform-core:2.28.0',
      'org.apache.beam:beam-sdks-java-io-google-cloud-platform:2.28.0',
      'org.apache.commons:commons-lang3:3.8.1',
      'org.apache.commons:commons-text:1.6',
      'org.apache.ftpserver:ftplet-api:1.0.6',
      'org.apache.ftpserver:ftpserver-core:1.0.6',
      'org.apache.httpcomponents:httpclient:4.5.11',
      'org.apache.httpcomponents:httpcore:4.4.13',
      'org.apache.logging.log4j:log4j-core:2.13.3',
      'org.apache.sshd:sshd-core:2.0.0',
      'org.apache.sshd:sshd-scp:2.0.0',
      'org.apache.sshd:sshd-sftp:2.0.0',
      'org.apache.tomcat:tomcat-annotations-api:8.0.5',
      'org.bouncycastle:bcpg-jdk15on:1.61',
      'org.bouncycastle:bcpkix-jdk15on:1.61',
      'org.bouncycastle:bcprov-jdk15on:1.61',
      'com.fasterxml.jackson.core:jackson-databind:2.11.2',
      'org.flywaydb:flyway-core:5.2.4',
      'org.glassfish.jaxb:jaxb-runtime:2.3.0',
      'org.hamcrest:hamcrest:2.2',
      'org.hamcrest:hamcrest-core:2.2',
      'org.hamcrest:hamcrest-library:2.2',
      'org.hibernate:hibernate-core:5.4.23.Final',
      'org.hibernate:hibernate-hikaricp:5.4.23.Final',
      'org.joda:joda-money:1.0.1',
      'org.json:json:20160810',
      'org.jsoup:jsoup:1.13.1',
      'org.mockito:mockito-core:3.7.7',
      'org.mockito:mockito-junit-jupiter:3.7.7',
      'org.mortbay.jetty:jetty:6.1.26',
      'org.postgresql:postgresql:42.2.18',
      'org.seleniumhq.selenium:selenium-api:3.141.59',
      'org.seleniumhq.selenium:selenium-chrome-driver:3.141.59',
      'org.seleniumhq.selenium:selenium-java:3.141.59',
      'org.seleniumhq.selenium:selenium-remote-driver:3.141.59',
      'org.slf4j:slf4j-jdk14:1.7.28',
      'org.testcontainers:jdbc:1.15.2',
      'org.testcontainers:junit-jupiter:1.15.2',
      'org.testcontainers:postgresql:1.15.2',
      'org.testcontainers:selenium:1.15.2',
      'org.testcontainers:testcontainers:1.15.2',
      'org.yaml:snakeyaml:1.17',
      'us.fatehi:schemacrawler:16.10.1',
      'us.fatehi:schemacrawler-api:16.10.1',
      'us.fatehi:schemacrawler-diagram:16.10.1',
      'us.fatehi:schemacrawler-tools:16.10.1',
      'xerces:xmlParserAPIs:2.6.2',
      'xpp3:xpp3:1.1.4c'
    ]

    dependencyMap = dependencyList.collectEntries {
      def fields = it.split(':')
      def key = fields[0] + ':' + fields[1]
      [key, it]
    }
}
