mower-ng/check_resources.py
zhbaor f43fe60cc5
All checks were successful
ci/woodpecker/push/check_format Pipeline was successful
改进extract脚本
2025-02-08 19:30:43 +08:00

75 lines
2.3 KiB
Python
Executable file

#!/usr/bin/env python3
"""
Copyright (c) 2024 Elaina <2901432375@qq.com>
Copyright (c) 2024 zhbaor <zhbaor@zhaozuohong.vip>
This file is part of mower-ng (https://git.zhaozuohong.vip/mower-ng/mower-ng).
Mower-ng is free software: you may copy, redistribute and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation, version 3 or later.
This file is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
from pathlib import Path
color = {}
template_matching = {}
template_matching_score = {}
with open("mower/utils/recognize/data.py", "r", encoding="utf-8") as f:
exec(f.read())
res_path_name = "mower/resources/"
res_path = Path(res_path_name)
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", "")
references[res_name] = []
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(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")
for name, matches in references.items():
appear_times = 0
if name in color:
appear_times += 1
if name in template_matching:
appear_times += 1
if appear_times > 1:
print(f"[ERROR]{name} appears {appear_times} times!")