# Copyright 2020 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

# Set root for generated files.
lucicfg.config(
    config_dir = "metadata/generated",
)

# Load and register protos.
load("@stdlib//internal/descpb.star", "wellknown_descpb")
protos = proto.new_descriptor_set(
    name = "chromiumos",
    blob = io.read_file("//proto/descpb.bin"),
    deps = [wellknown_descpb],
)
protos.register()

load("@proto//chromiumos/config/api/test/metadata/v1/metadata.proto",
    metadata_pb = "chromiumos.config.api.test.metadata.v1"
)

load("//metadata/tests.star", "TESTS")

METADATA = metadata_pb.Specification(
    remote_test_drivers = [metadata_pb.RemoteTestDriver(
        name = "remoteTestDrivers/tnull",
        tests = TESTS,
    )],
)

# Generate metadata proto output.
def _generate(config):
    """
    Serializes a proto message to files.

    A text proto and binary proto are written.
    """
    def _generate_impl(ctx):
        ctx.output["config.cfg"] = proto.to_jsonpb(config)
        ctx.output["config.binaryproto"] = proto.to_wirepb(config)

    lucicfg.generator(impl = _generate_impl)

def generate():
    _generate(METADATA)
