// Copyright (C) 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.

python_defaults {
    name: "acloud_default",
    pkg_path: "acloud",
    version: {
        py2: {
            enabled: true,
            embedded_launcher: false,
        },
        py3: {
            enabled: false,
            embedded_launcher: false,
        },
    },
}

python_binary_host {
    name: "acloud",
    // Make acloud's built name to acloud-dev
    stem: "acloud-dev",
    defaults: ["acloud_default"],
    main: "public/acloud_main.py",
    srcs: [
        "public/acloud_main.py",
        "errors.py"
    ],
    data: [
        "public/data/default.config",
    ],
    libs: [
        "acloud_create",
        "acloud_delete",
        "acloud_reconnect",
        "acloud_internal",
        "acloud_list",
        "acloud_pull",
        "acloud_metrics",
        "acloud_proto",
        "acloud_public",
        "acloud_setup",
        "py-apitools",
        "py-dateutil",
        "py-google-api-python-client",
        "py-oauth2client",
        "py-pyopenssl",
        "py-six",
    ],
    dist: {
        targets: ["droidcore"],
    },
}

python_test_host {
    name: "acloud_test",
    main: "acloud_test.py",
    defaults: ["acloud_default"],
    data: [
        "public/data/default.config",
    ],
    srcs: [
        "acloud_test.py",
        "errors.py",
        "public/*_test.py",
        "public/actions/*_test.py",
        "internal/lib/*_test.py",
        "metrics/*.py",
    ],
    libs: [
        "acloud_create",
        "acloud_delete",
        "acloud_reconnect",
        "acloud_internal",
        "acloud_list",
        "acloud_pull",
        "acloud_proto",
        "acloud_public",
        "acloud_setup",
        "asuite_cc_client",
        "py-apitools",
        "py-dateutil",
        "py-google-api-python-client",
        "py-mock",
        "py-oauth2client",
    ],
    test_config: "acloud_unittest.xml",
    test_suites: ["general-tests"],
}

python_library_host {
    name: "acloud_public",
    defaults: ["acloud_default"],
    srcs: [
        "public/*.py",
        "public/actions/*.py",
    ],
    exclude_srcs: [
        "public/*_test.py",
        "public/actions/*_test.py",
        "public/acloud_main.py",
    ]
}

python_library_host {
    name: "acloud_internal",
    defaults: ["acloud_default"],
    srcs: [
        "internal/*.py",
        "internal/lib/*.py",
    ],
    exclude_srcs: [
        "internal/lib/*_test.py",
    ]
}

python_library_host {
    name: "acloud_proto",
    defaults: ["acloud_default"],
    srcs: [
        "internal/proto/*.proto",
    ],
    proto: {
        canonical_path_from_root: false,
    },
}

python_library_host{
    name: "acloud_setup",
    defaults: ["acloud_default"],
    srcs: [
         "setup/*.py",
    ],
    exclude_srcs: [
        "setup/*_test.py",
    ],
}

python_library_host{
    name: "acloud_create",
    defaults: ["acloud_default"],
    srcs: [
         "create/*.py",
    ],
}

python_library_host{
    name: "acloud_delete",
    defaults: ["acloud_default"],
    srcs: [
         "delete/*.py",
    ],
}

python_library_host{
    name: "acloud_list",
    defaults: ["acloud_default"],
    srcs: [
         "list/*.py",
    ],
}

python_library_host{
    name: "acloud_reconnect",
    defaults: ["acloud_default"],
    srcs: [
         "reconnect/*.py",
    ],
}

python_library_host{
    name: "acloud_pull",
    defaults: ["acloud_default"],
    srcs: [
         "pull/*.py",
    ],
}

python_library_host{
    name: "acloud_metrics",
    defaults: ["acloud_default"],
    srcs: [
         "metrics/*.py",
    ],
    libs: [
         "asuite_cc_client",
         "asuite_metrics",
    ],
}
