#!/usr/bin/env python3 import os import sys import json import subprocess if len(sys.argv) != 2 or sys.argv[1].startswith("-"): print(f"Usage: {sys.argv[0]} ", file=sys.stderr) sys.exit(1) os.chdir(sys.argv[1]) if subprocess.run(["rg", "--version"], check=False, stdout=subprocess.DEVNULL).returncode != 0: # Regular grep doesn't suffice, we rely on ripgrep's functionality to honour .gitignore print("rg (ripgrep) is not found in PATH or not functional", file=sys.stderr) sys.exit(1) with open("langs/en.json", "r", encoding="utf-8") as fh: translations = json.load(fh) def walk(obj, prefix): for k, v in obj.items(): if isinstance(v, str): yield (f"{prefix}{k}", k) else: yield from walk(v, f"{prefix}{k}.") for fqkey, key in walk(translations, ""): print(f" Checking {key}", file=sys.stderr) p = subprocess.run( [ "rg", "--no-config", "--iglob=!langs", "--fixed-strings", "--max-count=1", "--", key ], check=False, stdout=subprocess.DEVNULL ) if p.returncode == 0: # String is used pass elif p.returncode == 1: # String is not used print(fqkey) else: # grep encountered an error print(f"Error while checking for {key}", file=sys.stderr)