Limit translations_develop to an integration (#31804)

* limit translations_develop to english

* Convert to Python

* Limit to integration

* Add to hassfest

* Remove old bash comment
This commit is contained in:
Paulus Schoutsen 2020-02-14 09:26:50 -08:00 committed by GitHub
parent e6148d223a
commit 71a81c443f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 79 additions and 13 deletions

View file

@ -82,6 +82,12 @@ def main():
subprocess.run(["python", "-m", "script.gen_requirements_all"], **pipe_null)
print()
print("Running script/translations_develop to pick up new translation strings.")
subprocess.run(
["script/translations_develop", "--integration", info.domain], **pipe_null
)
print()
if args.develop:
print("Running tests")
print(f"$ pytest -vvv tests/components/{info.domain}")

View file

@ -1,21 +1,81 @@
#!/usr/bin/env bash
#!/usr/bin/env python
# Compile the current translation strings files for testing
# Safe bash settings
# -e Exit on command fail
# -u Exit on unset variable
# -o pipefail Exit if piped command has error code
set -eu -o pipefail
import argparse
import json
import os
from pathlib import Path
from shutil import rmtree
import subprocess
import sys
cd "$(dirname "$0")/.."
mkdir -p build/translations-download
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."
)
script/translations_upload_merge.py
return integration
# Use the generated translations upload file as the mock output from the
# Lokalise download
mv build/translations-upload.json build/translations-download/en.json
script/translations_download_split.py
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()