diff --git a/scripts/check_unused_icons.py b/scripts/check_unused_icons.py index 22d81f77b..0f7967db3 100755 --- a/scripts/check_unused_icons.py +++ b/scripts/check_unused_icons.py @@ -5,29 +5,35 @@ root = pathlib.Path(__file__).parent / ".." icons = root / "assets/icons" -def source_dir_uses_icon(dir: str, name: str): +def count_icon_usages(name: str): count = 0 name = name.encode() - for file in (root / dir).glob("**/*.c"): - try: - if name in file.read_bytes(): - count += 1 - except Exception: - print(f"Faield to read {file}") + # EXTREMELY wasteful, but who cares + for dir in ("applications", "furi", "lib", "targets"): + for filetype in (".c", ".cpp", ".h", ".fam"): + for file in (root / dir).glob(f"**/*{filetype}"): + try: + if name in file.read_bytes(): + count += 1 + except Exception: + print(f"Failed to read {file}") return count -for category in icons.iterdir(): - if not category.is_dir(): - continue - for icon in category.iterdir(): - if icon.is_dir() and (icon / "frame_rate").is_file(): - name = "&A_" + icon.name.replace("-", "_") - else: - name = "&I_" + "_".join(icon.name.split(".")[:-1]).replace("-", "_") - count = 0 - for dir in ("applications", "furi", "lib", "targets"): - count += source_dir_uses_icon(dir, name) +if __name__ == "__main__": + counts = {} + + for category in icons.iterdir(): + if not category.is_dir(): + continue + for icon in category.iterdir(): + if icon.is_dir() and (icon / "frame_rate").is_file(): + name = "A_" + icon.name.replace("-", "_") + elif icon.is_file() and icon.suffix == ".png": + name = "I_" + "_".join(icon.name.split(".")[:-1]).replace("-", "_") + else: + continue + counts[name[2:]] = count_icon_usages(name) + + for name, count in sorted(counts.items(), key=lambda x: x[1], reverse=True): print(f"{name} used {count} times") - if count == 0: - print(f"====== {name} is not used! ======")