xref: /aosp_15_r20/external/autotest/metadata/generate.star (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright 2020 The Chromium OS Authors. All rights reserved.
2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
3*9c5db199SXin Li# found in the LICENSE file.
4*9c5db199SXin Li
5*9c5db199SXin Li
6*9c5db199SXin Li# Set root for generated files.
7*9c5db199SXin Lilucicfg.config(
8*9c5db199SXin Li    config_dir = "metadata/generated",
9*9c5db199SXin Li)
10*9c5db199SXin Li
11*9c5db199SXin Li# Load and register protos.
12*9c5db199SXin Liload("@stdlib//internal/descpb.star", "wellknown_descpb")
13*9c5db199SXin Liprotos = proto.new_descriptor_set(
14*9c5db199SXin Li    name = "chromiumos",
15*9c5db199SXin Li    blob = io.read_file("//metadata/proto/descpb.bin"),
16*9c5db199SXin Li    deps = [wellknown_descpb],
17*9c5db199SXin Li)
18*9c5db199SXin Liprotos.register()
19*9c5db199SXin Li
20*9c5db199SXin Li
21*9c5db199SXin Liload('@proto//chromiumos/config/api/test/metadata/v1/metadata.proto',
22*9c5db199SXin Li    metadata_pb = 'chromiumos.config.api.test.metadata.v1'
23*9c5db199SXin Li)
24*9c5db199SXin Liload('//metadata/tests.star', 'define_tests')
25*9c5db199SXin Li
26*9c5db199SXin Li
27*9c5db199SXin Lidef _specification():
28*9c5db199SXin Li    return metadata_pb.Specification(
29*9c5db199SXin Li        remote_test_drivers = [metadata_pb.RemoteTestDriver(
30*9c5db199SXin Li            name = 'remoteTestDrivers/tauto',
31*9c5db199SXin Li            tests = define_tests(),
32*9c5db199SXin Li        )]
33*9c5db199SXin Li    )
34*9c5db199SXin Li
35*9c5db199SXin Li
36*9c5db199SXin Li# Generate metadata proto output.
37*9c5db199SXin Lidef _generate(config):
38*9c5db199SXin Li    """
39*9c5db199SXin Li    Serializes a proto message to files.
40*9c5db199SXin Li
41*9c5db199SXin Li    A text proto and binary proto are written.
42*9c5db199SXin Li    """
43*9c5db199SXin Li    def _generate_impl(ctx):
44*9c5db199SXin Li        ctx.output["config.cfg"] = proto.to_jsonpb(config)
45*9c5db199SXin Li        ctx.output["config.binaryproto"] = proto.to_wirepb(config)
46*9c5db199SXin Li    lucicfg.generator(impl = _generate_impl)
47*9c5db199SXin Li
48*9c5db199SXin Li
49*9c5db199SXin Lidef generate():
50*9c5db199SXin Li    _generate(_specification())
51