diff options
Diffstat (limited to 'scripts/py/gen_labels_cpp.py')
-rw-r--r-- | scripts/py/gen_labels_cpp.py | 74 |
1 files changed, 55 insertions, 19 deletions
diff --git a/scripts/py/gen_labels_cpp.py b/scripts/py/gen_labels_cpp.py index 065ed5d..11d5040 100644 --- a/scripts/py/gen_labels_cpp.py +++ b/scripts/py/gen_labels_cpp.py @@ -1,6 +1,6 @@ #!env/bin/python3 -# SPDX-FileCopyrightText: Copyright 2021 Arm Limited and/or its affiliates <open-source-office@arm.com> +# SPDX-FileCopyrightText: Copyright 2021, 2023 Arm Limited and/or its affiliates <open-source-office@arm.com> # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); @@ -21,47 +21,83 @@ NN model output vector) into a vector list initialiser. The intention is for this script to be called as part of the build framework to auto-generate the cpp file with labels that can be used in the application without modification. """ -import datetime -from pathlib import Path from argparse import ArgumentParser +from pathlib import Path from jinja2 import Environment, FileSystemLoader +from gen_utils import GenUtils + +# pylint: disable=duplicate-code parser = ArgumentParser() # Label file path -parser.add_argument("--labels_file", type=str, help="Path to the label text file", required=True) +parser.add_argument( + "--labels_file", + type=str, + help="Path to the label text file", + required=True +) + # Output file to be generated -parser.add_argument("--source_folder_path", type=str, help="path to source folder to be generated.", required=True) -parser.add_argument("--header_folder_path", type=str, help="path to header folder to be generated.", required=True) -parser.add_argument("--output_file_name", type=str, help="Required output file name", required=True) +parser.add_argument( + "--source_folder_path", + type=str, + help="path to source folder to be generated.", + required=True +) + +parser.add_argument( + "--header_folder_path", + type=str, + help="path to header folder to be generated.", + required=True +) + +parser.add_argument( + "--output_file_name", + type=str, + help="Required output file name", + required=True +) + # Namespaces -parser.add_argument("--namespaces", action='append', default=[]) +parser.add_argument( + "--namespaces", + action='append', + default=[] +) + # License template -parser.add_argument("--license_template", type=str, help="Header template file", - default="header_template.txt") +parser.add_argument( + "--license_template", + type=str, + help="Header template file", + default="header_template.txt" +) -args = parser.parse_args() +parsed_args = parser.parse_args() env = Environment(loader=FileSystemLoader(Path(__file__).parent / 'templates'), trim_blocks=True, lstrip_blocks=True) +# pylint: enable=duplicate-code def main(args): + """ + Generate labels .cpp + @param args: Parsed args + """ # Get the labels from text file - with open(args.labels_file, "r") as f: + with open(args.labels_file, "r", encoding="utf8") as f: labels = f.read().splitlines() # No labels? if len(labels) == 0: - raise Exception(f"no labels found in {args.label_file}") + raise ValueError(f"no labels found in {args.label_file}") - header_template = env.get_template(args.license_template) - hdr = header_template.render(script_name=Path(__file__).name, - gen_time=datetime.datetime.now(), - file_name=Path(args.labels_file).name, - year=datetime.datetime.now().year) + hdr = GenUtils.gen_header(env, args.license_template, Path(args.labels_file).name) hpp_filename = Path(args.header_folder_path) / (args.output_file_name + ".hpp") env.get_template('Labels.hpp.template').stream(common_template_header=hdr, @@ -78,4 +114,4 @@ def main(args): if __name__ == '__main__': - main(args) + main(parsed_args) |