From efc2de99de53c1da0ffc8840a7cc33b490199606 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 2 Sep 2022 18:35:59 +1000 Subject: [PATCH] Tools: add generate_features_txt_files.py walks a directory tree and emits a features.txt for each found .elf --- Tools/scripts/generate_features_txt_files.py | 52 ++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100755 Tools/scripts/generate_features_txt_files.py diff --git a/Tools/scripts/generate_features_txt_files.py b/Tools/scripts/generate_features_txt_files.py new file mode 100755 index 0000000000..a998814d60 --- /dev/null +++ b/Tools/scripts/generate_features_txt_files.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python + +''' +recurse through directory tree rooted at supplied path. For every elf file found, write out next to it a features.txt +''' + +import optparse +import os +import sys + +import extract_features + +class GenerateFeatureTxtFiles(object): + def __init__(self, path): + self.path = path + + def write_features_txt_for_filepath(self, filepath): + ef = extract_features.ExtractFeatures(filepath) + text = ef.create_string() + features_txt_filepath = os.path.join(os.path.dirname(filepath), "features.txt") + with open(features_txt_filepath, "w") as fh: + fh.write(text) + + def run(self): + done_dirpaths = dict() + for (dirpath, dirnames, filenames) in os.walk(self.path): + for filename in filenames: + if os.path.splitext(filename)[1].upper() != ".ELF": + continue + if dirpath in done_dirpaths: + raise ValueError( + "Already processed elf (%s) in dirpath (%s) but also found elf (%s)" % + (done_dirpaths[dirpath], dirpath, filename)) + done_dirpaths[dirpath] = filename + filepath = os.path.join(dirpath, filename) + self.write_features_txt_for_filepath(filepath) + + +if __name__ == '__main__': + + parser = optparse.OptionParser("generate_features_txt_files.py DIRPATH") + + cmd_opts, cmd_args = parser.parse_args() + + if len(cmd_args) < 1: + parser.print_help() + sys.exit(1) + + dirpath = cmd_args[0] + + gen = GenerateFeatureTxtFiles(dirpath) + gen.run()