68 lines
2 KiB
Python
68 lines
2 KiB
Python
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("**/*.png"), key=lambda x: x.as_posix()):
|
|
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))
|