#!/usr/bin/env python3 # -*- coding: utf-8 -*- import re import os import pprint import json def create_paths_list(dirname, filenames): paths = [] for basename in filenames: path = dirname + basename paths.append(path) return paths def read_files(paths): content = [] for path in paths: file_info = read_file(path) content.append(file_info) return content def read_file(path): with open(path) as f: file_content = f.read() item = {"path": path, "content": file_content} return item def extract_functions(file_content): pattr = re.compile("DYNAMIC_API.*?\);", re.DOTALL) res = pattr.findall(file_content) return res def process(header, out_dir): # Process and create data structure print("processing path: " + header.get("path") + "...") basename = os.path.basename(header.get("path")) # strip suffix, will be added output format dependently basename_minus_suffix = re.sub("\..*$",'',basename) # add outpath outpath = out_dir + basename_minus_suffix header["outpath"] = outpath # add functions functions = extract_functions(header.get("content")) header["functions"] = functions return header def write_json(header): header["outpath"] += ".json" with open(header.get("outpath"), "w+") as f: json.dump(header, f, indent=4) def main(): # Input prefix = r"/Users/heck/local-default/" filenames = ["pEpEngine.h", "keymanagement.h"] # Output out_dir = "data/" basename = prefix + r"include/pEp/" if not os.path.isdir(out_dir): os.makedirs(out_dir) paths = create_paths_list(basename, filenames) headers = read_files(paths) for header in headers: # Process header = process(header, out_dir) # Output write_json(header) if __name__ == "__main__": main()