summaryrefslogtreecommitdiff
path: root/scripts/py/gen_labels_cpp.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/py/gen_labels_cpp.py')
-rw-r--r--scripts/py/gen_labels_cpp.py74
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)