#!/usr/bin/env python3
# -*- coding: utf-8 -*-
#
# Copyright (C) 2020 The SymbiFlow Authors.
#
# Use of this source code is governed by a ISC-style
# license that can be found in the LICENSE file or at
# https://opensource.org/licenses/ISC
#
# SPDX-License-Identifier: ISC

import os
import sys
import glob

templ = """/*
:name: {1}
:description: Tests imported from yosys
:files: {0}
:tags: yosys
*/
"""

try:
    third_party_dir = os.environ['THIRD_PARTY_DIR']
    tests_dir = os.environ['TESTS_DIR']
    conf_dir = os.environ['CONF_DIR']
except KeyError:
    print("Export the THIRD_PARTY_DIR, TESTS_DIR and CONF_DIR variables first")
    sys.exit(1)

try:
    tests_subdir = sys.argv[1]
except IndexError:
    print("Usage: ./generator <subdir>")
    sys.exit(1)

yosys_path = os.path.abspath(os.path.join(third_party_dir, "tools", "yosys"))
hana_vlib = os.path.join(yosys_path, 'tests', 'hana', 'hana_vlib.v')

test_dir = os.path.join(tests_dir, 'generated', tests_subdir)

if not os.path.isdir(test_dir):
    os.makedirs(test_dir, exist_ok=True)

for f in glob.glob(os.path.join(yosys_path, 'tests', 'hana', 'test*.v')):
    # test_parser has invalid syntax
    if 'test_parser.v' in f:
        continue

    fname = 'hana_' + os.path.basename(os.path.splitext(f)[0])
    test_file = os.path.join(test_dir, fname + '.sv')

    with open(test_file, "w") as sv:
        sv.write(templ.format(f + ' ' + hana_vlib, fname))
