// Copyright (C) 2020 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: "treble_split_default",
    pkg_path: "treble",
    version: {
        py2: {
            enabled: false,
        },
        py3: {
            enabled: true,
        },
    },
    libs: [
        "py-setuptools",
    ],
}

python_binary_host {
    name: "treble_manifest_split",
    main: "manifest_split.py",
    defaults: ["treble_split_default"],
    srcs: [
        "manifest_split.py",
    ],
    data: [
        "default_config.xml",
    ],
}

python_test_host {
    name: "treble_manifest_split_test",
    main: "test.py",
    defaults: ["treble_split_default"],
    srcs: [
        "manifest_split.py",
        "manifest_split_test.py",
        "test.py",
    ],
    libs: [
        "py-mock",
    ],
    test_config: "test.xml",
    test_suites: ["general-tests"],
}
