82 lines
2.1 KiB
Python
Executable File
82 lines
2.1 KiB
Python
Executable File
#!/usr/bin/env python
|
|
|
|
# Compile the current translation strings files for testing
|
|
|
|
import argparse
|
|
import json
|
|
import os
|
|
from pathlib import Path
|
|
from shutil import rmtree
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def valid_integration(integration):
|
|
"""Test if it's a valid integration."""
|
|
if not Path(f"homeassistant/components/{integration}").exists():
|
|
raise argparse.ArgumentTypeError(
|
|
f"The integration {integration} does not exist."
|
|
)
|
|
|
|
return integration
|
|
|
|
|
|
def get_arguments() -> argparse.Namespace:
|
|
"""Get parsed passed in arguments."""
|
|
parser = argparse.ArgumentParser(description="Develop Translations")
|
|
parser.add_argument(
|
|
"--integration", type=valid_integration, help="Integration to process."
|
|
)
|
|
|
|
arguments = parser.parse_args()
|
|
|
|
return arguments
|
|
|
|
|
|
def main():
|
|
"""Run the script."""
|
|
if not os.path.isfile("requirements_all.txt"):
|
|
print("Run this from HA root dir")
|
|
return
|
|
|
|
args = get_arguments()
|
|
if args.integration:
|
|
integration = args.integration
|
|
else:
|
|
integration = None
|
|
while (
|
|
integration is None
|
|
or not Path(f"homeassistant/components/{integration}").exists()
|
|
):
|
|
if integration is not None:
|
|
print(f"Integration {integration} doesn't exist!")
|
|
print()
|
|
integration = input("Integration to process: ")
|
|
|
|
download_dir = Path("build/translations-download")
|
|
|
|
if download_dir.is_dir():
|
|
rmtree(str(download_dir))
|
|
|
|
download_dir.mkdir()
|
|
|
|
subprocess.run("script/translations_upload_merge.py")
|
|
|
|
raw_data = json.loads(Path("build/translations-upload.json").read_text())
|
|
|
|
if integration not in raw_data["component"]:
|
|
print("Integration has no strings.json")
|
|
sys.exit(1)
|
|
|
|
Path("build/translations-download/en.json").write_text(
|
|
json.dumps({"component": {integration: raw_data["component"][integration]}})
|
|
)
|
|
|
|
subprocess.run(
|
|
["script/translations_download_split.py", "--integration", "{integration}"]
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|