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

package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

python_binary_host {
    name: "gen_provenance_metadata",
    srcs: [
        "gen_provenance_metadata.py",
    ],
    version: {
        py3: {
            embedded_launcher: true,
        },
    },
    libs: [
        "provenance_metadata_proto",
        "libprotobuf-python",
    ],
}

python_test_host {
    name: "gen_provenance_metadata_test",
    main: "gen_provenance_metadata_test.py",
    srcs: [
        "gen_provenance_metadata_test.py",
    ],
    data: [
        ":gen_provenance_metadata",
    ],
    libs: [
        "provenance_metadata_proto",
        "libprotobuf-python",
    ],
    test_suites: ["general-tests"],
}
