from pathlib import Path from mower.utils.recognize.data import color, template_matching, template_matching_score res_path_name = "mower/resources/" res_path = Path(res_path_name) data = "from typing import Literal\n\nRes = Literal[\n" references = {} for i in sorted(res_path.glob("**/*"), key=lambda x: x.as_posix()): if not i.is_file(): continue res_name = i.as_posix() res_name = res_name.replace(res_path_name, "") res_name = res_name.replace(".png", "") data += f' "{res_name}",\n' references[res_name] = [] data += "]\n" with open("mower/utils/typealias/res.py", "w", encoding="utf-8") as f: f.write(data) for py_file in sorted(Path("mower").glob("**/*.py"), key=lambda x: x.as_posix()): posix_path = py_file.as_posix() if posix_path in [ "mower/utils/typealias/res.py", "mower/utils/recognize/data.py", ]: continue with py_file.open("r", encoding="utf-8") as f: content = f.read() for name, matches in references.items(): if f'"{name}"' in content: matches.append(posix_path) for name, matches in references.items(): if len(matches) > 0: print(name) for m in matches: print(f" {m}") for name, matches in references.items(): if len(matches) == 0: print(f"[WARN]{name}") if name in color: print(" - in color") if name in template_matching: print(" - in template_matching") if name in template_matching_score: print(" - in template_matching_score") def print_dict(data): data = list(data.items()) data.sort(key=lambda x: x[0]) result = "{\n" for key, value in data: result += f' "{key}": {value},\n' result += "}\n" return result with open("mower/utils/recognize/data.py", "w", encoding="utf-8") as f: f.write("color = ") f.write(print_dict(color)) f.write("\ntemplate_matching = ") f.write(print_dict(template_matching)) f.write("\ntemplate_matching_score = ") f.write(print_dict(template_matching_score))