wesnoth/po/FINDPY
Ivo Julca 4d2cb1ce7f Build: Update scripts for .pot, .po files to support Python files
- Rewrites some of the commands to use Python.
- Also implements wmlxgettext --force-po, similar to xgettext.
2023-06-14 09:58:56 +02:00

53 lines
1.7 KiB
Python
Executable File

#!/usr/bin/env python3
#
# Lists localizable Python scripts and modules.
# Excludes files in .git folders.
#
# Syntax:
# FINDPY DOMAIN
#
# In contrast to FINDCPP, there is no default domain.
import argparse
import glob
import re
from pathlib import Path
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('domain') # Single positional argument.
args = parser.parse_args()
# Whether the input string has defined args.domain as its text domain.
domain_regexp = re.compile(" *_ *= *gettext\\.translation\\((['\"])" + re.escape(args.domain) + "\\1")
py_files = glob.glob("data/tools/**/*.py", recursive=True)
# Executable files are hardcoded rather than scanning for +x (which doesn't exist in Windows),
# and matching shebang line.
py_files.extend([
"data/tools/GUI.pyw",
"data/tools/about_cfg_to_wiki",
"data/tools/check_mixed_indent" ,
"data/tools/extractbindings",
"data/tools/imgcheck",
"data/tools/steam-changelog",
"data/tools/TeamColorizer",
"data/tools/tmx_trackplacer",
"data/tools/wesnoth_addon_manager",
"data/tools/wmlflip",
"data/tools/wmlindent",
"data/tools/wmllint",
"data/tools/wmllint-1.4",
"data/tools/wmlscope",
"data/tools/wmlunits",
"data/tools/wmlxgettext"
])
py_files.sort()
for p in py_files:
# In Windows, glob search yields paths with mixed separators (/\).
path = Path(p)
# Exclude any .git subdirectories.
if ".git" in path.parts:
continue
if re.search(domain_regexp, path.read_text(encoding='utf8')):
# Produce output with / only.
print(path.as_posix())