Skip to content

Commit

Permalink
Replace os with pahlib in babe_runner.py
Browse files Browse the repository at this point in the history
  • Loading branch information
rffontenelle committed Aug 3, 2024
1 parent 7878f4e commit 1fbd5d0
Showing 1 changed file with 15 additions and 18 deletions.
33 changes: 15 additions & 18 deletions babel_runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,32 @@
from __future__ import annotations

import argparse
import os
import subprocess
from pathlib import Path

import tomllib

PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
PROJECT_DIR = Path(__file__).resolve().parent

# Global variables used by pybabel below
# Global variables used by pybabel below (paths relative to PROJECT_DIR)
DOMAIN = "messages"
COPYRIGHT_HOLDER = "Python Software Foundation"
LOCALES_DIR = os.path.relpath(os.path.join(PROJECT_DIR, "locales"))
POT_FILE = os.path.relpath(os.path.join(LOCALES_DIR, f"{DOMAIN}.pot"), PROJECT_DIR)
SOURCE_DIR = os.path.relpath(
os.path.join(PROJECT_DIR, "python_docs_theme"), PROJECT_DIR
)
MAPPING_FILE = os.path.relpath(os.path.join(PROJECT_DIR, ".babel.cfg"), PROJECT_DIR)
LOCALES_DIR = "locales"
POT_FILE = Path(LOCALES_DIR, f"{DOMAIN}.pot")
SOURCE_DIR = "python_docs_theme"
MAPPING_FILE = ".babel.cfg"


def get_project_info() -> dict:
"""Retrieve project's info to populate the message catalog template"""
with open(os.path.join(PROJECT_DIR, "pyproject.toml"), "rb") as f:
with open(Path(PROJECT_DIR / "pyproject.toml"), "rb") as f:
data = tomllib.load(f)
return data["project"]


def extract_messages():
"""Extract messages from all source files into message catalog template"""
os.makedirs(LOCALES_DIR, exist_ok=True)
Path(PROJECT_DIR, LOCALES_DIR).mkdir(parents=True, exist_ok=True)
project_data = get_project_info()
subprocess.run(
[
Expand All @@ -50,34 +48,35 @@ def extract_messages():
POT_FILE,
SOURCE_DIR,
],
cwd=PROJECT_DIR,
check=True,
)


def init_locale(locale: str):
"""Initialize a new locale based on existing message catalog template"""
pofile = os.path.join(LOCALES_DIR, locale, "LC_MESSAGES", f"{DOMAIN}.po")
if os.path.exists(pofile):
pofile = PROJECT_DIR / LOCALES_DIR / locale / "LC_MESSAGES" / f"{DOMAIN}.po"
if pofile.exists():
print(f"There is already a message catalog for locale {locale}, skipping.")
return
cmd = ["pybabel", "init", "-i", POT_FILE, "-d", LOCALES_DIR, "-l", locale]
subprocess.run(cmd, check=True)
subprocess.run(cmd, cwd=PROJECT_DIR, check=True)


def update_catalogs(locale: str):
"""Update translations from existing message catalogs"""
cmd = ["pybabel", "update", "-i", POT_FILE, "-d", LOCALES_DIR]
if locale != "":
cmd.extend(["-l", locale])
subprocess.run(cmd, check=True)
subprocess.run(cmd, cwd=PROJECT_DIR, check=True)


def compile_catalogs(locale: str):
"""Compile existing message catalogs"""
cmd = ["pybabel", "compile", "-d", LOCALES_DIR]
if locale != "":
cmd.extend(["-l", locale])
subprocess.run(cmd, check=True)
subprocess.run(cmd, cwd=PROJECT_DIR, check=True)


def main():
Expand All @@ -96,8 +95,6 @@ def main():
args = parser.parse_args()
locale = args.locale if args.locale else ""

os.chdir(PROJECT_DIR)

if args.command == "extract":
extract_messages()
elif args.command == "init":
Expand Down

0 comments on commit 1fbd5d0

Please sign in to comment.