# Lint as: python3
# 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.

import glob
import os

# Relative to .star root (in autotest/files).
OUTPUT_FILE = "metadata/tests.star"

HEADER = """# 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.

TESTS = []
def _append_tests(tests):
    for t in tests:
        TESTS.append(t)
"""

TEMPLATE = """
load("//{path}", {unique_name} = "TESTS")
_append_tests({unique_name})
"""


def main():
    """Main entry point of this script."""
    root_dir = os.path.realpath(
            os.path.join(os.path.realpath(__file__), "../../.."))
    os.chdir(root_dir)
    output = HEADER
    for test_type in ["client", "server"]:
        for path in glob.iglob(test_type + "/site_tests/*/*.star"):
            head, file_name = os.path.split(path)
            head, test_folder = os.path.split(head)
            unique_name = "_".join(
                    [test_type, test_folder, file_name[:-len(".star")]])
            output += TEMPLATE.format(path=path, unique_name=unique_name)

    with open(OUTPUT_FILE, 'w') as fh:
        fh.write(output)
    print("Wrote output to", OUTPUT_FILE)


if __name__ == '__main__':
    main()
