// Copyright 2018 The Android Open Source Project
//
// 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.

// Set of error prone rules to ensure code quality
// PackageLocation check requires the androidCompatible=false otherwise it does not do anything.
java_defaults {
  name: "tradefed_errorprone_defaults",
  errorprone: {
    javacflags: [
      "-XDandroidCompatible=false",
      "-Xep:ArrayToString:ERROR",
      "-Xep:BoxedPrimitiveConstructor:ERROR",
      "-Xep:CatchFail:ERROR",
      "-Xep:ConstantField:ERROR",
      "-Xep:DeadException:ERROR",
      "-Xep:EqualsIncompatibleType:ERROR",
      "-Xep:ExtendingJUnitAssert:ERROR",
      "-Xep:FormatString:ERROR",
      "-Xep:GetClassOnClass:ERROR",
      "-Xep:IdentityBinaryExpression:ERROR",
      "-Xep:JUnit3TestNotRun:ERROR",
      "-Xep:JUnit4TestNotRun:ERROR",
      "-Xep:JUnit4ClassUsedInJUnit3:ERROR",
      "-Xep:JUnitAmbiguousTestClass:ERROR",
      "-Xep:MissingFail:ERROR",
      "-Xep:MissingOverride:ERROR",
      "-Xep:ModifiedButNotUsed:ERROR",
      "-Xep:MustBeClosedChecker:ERROR",
      "-Xep:Overrides:ERROR",
      "-Xep:PackageLocation:ERROR",
      "-Xep:ParameterName:ERROR",
      "-Xep:ReferenceEquality:ERROR",
      "-Xep:RemoveUnusedImports:ERROR",
      "-Xep:ReturnValueIgnored:ERROR",
      "-Xep:SelfEquals:ERROR",
      "-Xep:SizeGreaterThanOrEqualsZero:ERROR",
      "-Xep:TryFailThrowable:ERROR",
      "-Xep:UnnecessaryParentheses:ERROR",
      "-Xep:UseCorrectAssertInTests:ERROR",
    ],
  },
}

java_defaults {
  name: "tradefed_defaults",
  defaults: [ "tradefed_errorprone_defaults" ],
  javacflags: [
    "-g",
    "-Xlint",
  ],
}

java_library_host {
    name: "tradefed-protos",
    srcs: ["proto/**/*.proto"],
    libs: [
        "libprotobuf-java-full",
    ],
    proto: {
        include_dirs: ["external/protobuf/src"],
        type: "full",
    },
    static_libs: [
        "platformprotos",
        "asuite_proto_java",
    ],
}

python_library_host {
    name: "tradefed-protos-py",
    pkg_path: "atest",
    srcs: ["proto/**/*.proto"],
    libs: [
        "libprotobuf-python",
    ],
    proto: {
        include_dirs: ["external/protobuf/src"],
    },
    version: {
        py2: {
            enabled: true,
        },
        py3: {
            enabled: true,
        },
    },
}

// Main Target to build tradefed jar
java_library_host {
    name: "tradefed",
    defaults: ["tradefed_defaults"],
    java_resource_dirs: [
        "res",
    ],
    static_libs: [
        "tradefed-lib-core",
        "tradefed-test-framework",
    ],
    manifest: "MANIFEST.mf",
}

// Tradefed build target without the test framework statically linked
java_library_host {
    name: "tradefed-no-fwk",
    defaults: ["tradefed_defaults"],
    java_resource_dirs: [
        "res",
    ],
    static_libs: [
        "tradefed-lib-core",
    ],
    libs: [
        "tradefed-test-framework",
    ],
    manifest: "MANIFEST.mf",
}

java_library_host {
    name: "tradefed-lib-core",
    defaults: ["tradefed_defaults"],
    srcs: [
        "src/**/*.java",
        "global_configuration/**/*.java",
    ],
    static_libs: [
        "tradefed-common-util",
        "tradefed-clearcut-client",
        "tradefed-result-interfaces",
        "tradefed-device-build-interfaces",
        "tradefed-invocation-interfaces",
        "protobuf-java-util-prebuilt-jar",
        "aoa-helper",
        "error_prone_annotations-2.0.18",
        "google-api-java-client-min-repackaged",
        "google-api-services-compute",
        "google-api-services-storage",
        "gson-prebuilt-jar",
        "guice",
        "jacoco-cli",
        "jline-1.0",
        "junit-params",
        "kxml2-2.3.0",
        "libprotobuf-java-full",
        "platform-test-annotations",
        "snakeyaml",
        "tf-remote-client",
        "tradefed-protos",
        "tradefed-isolation-protos",
        "tradefed-lite",
    ],
    libs: [
        "loganalysis",
    ],
}

// Turn off various doclava warnings when generating
// the docs. These are the same warnings that are
// turned off in frameworks/base, plus error 101
// which is necessary here because tradefed is
// referencing bootclasspath classes that are not
// feed to metalava when generating the stubs.
tradefed_docs_only_args = " -hide 101 -hide 111 -hide 113 -hide 125 -hide 126 -hide 127 -hide 128 "

droidstubs_host {
    name: "tradefed-doc-stubs",
    srcs: [
        "src/**/*.java",
    ],
    libs: [
        "loganalysis",
        "tradefed",
    ],
    args: tradefed_docs_only_args + "--package",
    create_doc_stubs: true,
}

droiddoc_host {
    name: "tradefed-docs",
    srcs: [
        ":tradefed-doc-stubs",
    ],
    libs: [
        "loganalysis",
        "tradefed",
    ],
    custom_template: "droiddoc-templates-sdk",
    hdf: [
        "sac true",
        "devices true",
        "android.whichdoc online",
        "css.path /reference/assets/css/doclava-devsite.css",
        "book.root toc",
        "book.path /_book.yaml",
    ],
    args: tradefed_docs_only_args +
          "-yaml _book.yaml " +
          "-apidocsdir reference/tradefed/ " +
          "-werror " +
          "-package " +
          "-devsite ",
    create_stubs: false,
}

sh_binary_host {
    name: "tradefed.sh",
    src: "tradefed.sh",
}

sh_binary_host {
    name: "tradefed_win",
    src: "tradefed_win.bat",
}

sh_binary_host {
    name: "script_help.sh",
    src: "script_help.sh",
}

sh_binary_host {
    name: "run_tf_cmd.sh",
    src: "run_tf_cmd.sh",
}

sh_binary_host {
    name: "atest_tradefed.sh",
    src: "atest_tradefed.sh",
}
