From c7933d8eb33aa7874f48e1b53fe6ef7c8b5f5e88 Mon Sep 17 00:00:00 2001 From: miro Date: Mon, 4 Nov 2024 17:52:22 +0000 Subject: [PATCH] fix: gui resources path --- .../qt5}/+mediacenter/RoundProgress.qml | 0 {ui => gui/qt5}/+mediacenter/Timer.qml | 0 {ui => gui/qt5}/+mediacenter/TimerCard.qml | 0 {ui => gui/qt5}/AlarmBoxControl.qml | 0 {ui => gui/qt5}/AlarmBoxView.qml | 0 {ui => gui/qt5}/AlarmButtonView.qml | 0 {ui => gui/qt5}/AlarmCard.qml | 0 {ui => gui/qt5}/AlarmsOverviewCard.qml | 0 {ui => gui/qt5}/AlarmsOverviewDelegate.qml | 0 {ui => gui/qt5}/ListView.qml | 0 {ui => gui/qt5}/RoundProgress.qml | 0 {ui => gui/qt5}/Timer.qml | 0 {ui => gui/qt5}/TimerCard.qml | 0 {ui => gui/qt5}/icons/close.svg | 0 {ui => gui/qt5}/icons/continue.svg | 0 {ui => gui/qt5}/icons/pause.svg | 0 {ui => gui/qt5}/qmldir | 0 {ui => gui/qt5}/sounds/clicked.wav | Bin {ui => gui/qt5}/translations/TimerCard_de.ts | 0 {ui => gui/qt5}/translations/TimerCard_es.ts | 0 {ui => gui/qt5}/translations/TimerCard_fr.ts | 0 {ui => gui/qt5}/translations/TimerCard_it.ts | 0 {ui => gui/qt5}/translations/TimerCard_nl.ts | 0 {ui => gui/qt5}/translations/TimerCard_pt.ts | 0 .../skill-ovos-timer.openvoiceos_de.qm | Bin .../skill-ovos-timer.openvoiceos_es.qm | Bin .../skill-ovos-timer.openvoiceos_fr.qm | Bin .../skill-ovos-timer.openvoiceos_it.qm | Bin .../skill-ovos-timer.openvoiceos_nl.qm | Bin .../skill-ovos-timer.openvoiceos_pt.qm | Bin scripts/bump_alpha.py | 18 -- scripts/bump_build.py | 21 --- scripts/bump_major.py | 27 --- scripts/bump_minor.py | 24 --- scripts/migrate_locale.py | 26 --- scripts/prepare_skillstore.py | 76 --------- scripts/prepare_translations.py | 53 ------ scripts/release_skillstore.py | 41 ----- scripts/remove_alpha.py | 13 -- scripts/translate.py | 157 ------------------ setup.py | 2 +- test/osm_tests.py | 29 ---- 42 files changed, 1 insertion(+), 486 deletions(-) rename {ui => gui/qt5}/+mediacenter/RoundProgress.qml (100%) rename {ui => gui/qt5}/+mediacenter/Timer.qml (100%) rename {ui => gui/qt5}/+mediacenter/TimerCard.qml (100%) rename {ui => gui/qt5}/AlarmBoxControl.qml (100%) rename {ui => gui/qt5}/AlarmBoxView.qml (100%) rename {ui => gui/qt5}/AlarmButtonView.qml (100%) rename {ui => gui/qt5}/AlarmCard.qml (100%) rename {ui => gui/qt5}/AlarmsOverviewCard.qml (100%) rename {ui => gui/qt5}/AlarmsOverviewDelegate.qml (100%) rename {ui => gui/qt5}/ListView.qml (100%) rename {ui => gui/qt5}/RoundProgress.qml (100%) rename {ui => gui/qt5}/Timer.qml (100%) rename {ui => gui/qt5}/TimerCard.qml (100%) rename {ui => gui/qt5}/icons/close.svg (100%) rename {ui => gui/qt5}/icons/continue.svg (100%) rename {ui => gui/qt5}/icons/pause.svg (100%) rename {ui => gui/qt5}/qmldir (100%) rename {ui => gui/qt5}/sounds/clicked.wav (100%) rename {ui => gui/qt5}/translations/TimerCard_de.ts (100%) rename {ui => gui/qt5}/translations/TimerCard_es.ts (100%) rename {ui => gui/qt5}/translations/TimerCard_fr.ts (100%) rename {ui => gui/qt5}/translations/TimerCard_it.ts (100%) rename {ui => gui/qt5}/translations/TimerCard_nl.ts (100%) rename {ui => gui/qt5}/translations/TimerCard_pt.ts (100%) rename {ui => gui/qt5}/translations/skill-ovos-timer.openvoiceos_de.qm (100%) rename {ui => gui/qt5}/translations/skill-ovos-timer.openvoiceos_es.qm (100%) rename {ui => gui/qt5}/translations/skill-ovos-timer.openvoiceos_fr.qm (100%) rename {ui => gui/qt5}/translations/skill-ovos-timer.openvoiceos_it.qm (100%) rename {ui => gui/qt5}/translations/skill-ovos-timer.openvoiceos_nl.qm (100%) rename {ui => gui/qt5}/translations/skill-ovos-timer.openvoiceos_pt.qm (100%) delete mode 100644 scripts/bump_alpha.py delete mode 100644 scripts/bump_build.py delete mode 100644 scripts/bump_major.py delete mode 100644 scripts/bump_minor.py delete mode 100644 scripts/migrate_locale.py delete mode 100644 scripts/prepare_skillstore.py delete mode 100644 scripts/prepare_translations.py delete mode 100644 scripts/release_skillstore.py delete mode 100644 scripts/remove_alpha.py delete mode 100644 scripts/translate.py delete mode 100644 test/osm_tests.py diff --git a/ui/+mediacenter/RoundProgress.qml b/gui/qt5/+mediacenter/RoundProgress.qml similarity index 100% rename from ui/+mediacenter/RoundProgress.qml rename to gui/qt5/+mediacenter/RoundProgress.qml diff --git a/ui/+mediacenter/Timer.qml b/gui/qt5/+mediacenter/Timer.qml similarity index 100% rename from ui/+mediacenter/Timer.qml rename to gui/qt5/+mediacenter/Timer.qml diff --git a/ui/+mediacenter/TimerCard.qml b/gui/qt5/+mediacenter/TimerCard.qml similarity index 100% rename from ui/+mediacenter/TimerCard.qml rename to gui/qt5/+mediacenter/TimerCard.qml diff --git a/ui/AlarmBoxControl.qml b/gui/qt5/AlarmBoxControl.qml similarity index 100% rename from ui/AlarmBoxControl.qml rename to gui/qt5/AlarmBoxControl.qml diff --git a/ui/AlarmBoxView.qml b/gui/qt5/AlarmBoxView.qml similarity index 100% rename from ui/AlarmBoxView.qml rename to gui/qt5/AlarmBoxView.qml diff --git a/ui/AlarmButtonView.qml b/gui/qt5/AlarmButtonView.qml similarity index 100% rename from ui/AlarmButtonView.qml rename to gui/qt5/AlarmButtonView.qml diff --git a/ui/AlarmCard.qml b/gui/qt5/AlarmCard.qml similarity index 100% rename from ui/AlarmCard.qml rename to gui/qt5/AlarmCard.qml diff --git a/ui/AlarmsOverviewCard.qml b/gui/qt5/AlarmsOverviewCard.qml similarity index 100% rename from ui/AlarmsOverviewCard.qml rename to gui/qt5/AlarmsOverviewCard.qml diff --git a/ui/AlarmsOverviewDelegate.qml b/gui/qt5/AlarmsOverviewDelegate.qml similarity index 100% rename from ui/AlarmsOverviewDelegate.qml rename to gui/qt5/AlarmsOverviewDelegate.qml diff --git a/ui/ListView.qml b/gui/qt5/ListView.qml similarity index 100% rename from ui/ListView.qml rename to gui/qt5/ListView.qml diff --git a/ui/RoundProgress.qml b/gui/qt5/RoundProgress.qml similarity index 100% rename from ui/RoundProgress.qml rename to gui/qt5/RoundProgress.qml diff --git a/ui/Timer.qml b/gui/qt5/Timer.qml similarity index 100% rename from ui/Timer.qml rename to gui/qt5/Timer.qml diff --git a/ui/TimerCard.qml b/gui/qt5/TimerCard.qml similarity index 100% rename from ui/TimerCard.qml rename to gui/qt5/TimerCard.qml diff --git a/ui/icons/close.svg b/gui/qt5/icons/close.svg similarity index 100% rename from ui/icons/close.svg rename to gui/qt5/icons/close.svg diff --git a/ui/icons/continue.svg b/gui/qt5/icons/continue.svg similarity index 100% rename from ui/icons/continue.svg rename to gui/qt5/icons/continue.svg diff --git a/ui/icons/pause.svg b/gui/qt5/icons/pause.svg similarity index 100% rename from ui/icons/pause.svg rename to gui/qt5/icons/pause.svg diff --git a/ui/qmldir b/gui/qt5/qmldir similarity index 100% rename from ui/qmldir rename to gui/qt5/qmldir diff --git a/ui/sounds/clicked.wav b/gui/qt5/sounds/clicked.wav similarity index 100% rename from ui/sounds/clicked.wav rename to gui/qt5/sounds/clicked.wav diff --git a/ui/translations/TimerCard_de.ts b/gui/qt5/translations/TimerCard_de.ts similarity index 100% rename from ui/translations/TimerCard_de.ts rename to gui/qt5/translations/TimerCard_de.ts diff --git a/ui/translations/TimerCard_es.ts b/gui/qt5/translations/TimerCard_es.ts similarity index 100% rename from ui/translations/TimerCard_es.ts rename to gui/qt5/translations/TimerCard_es.ts diff --git a/ui/translations/TimerCard_fr.ts b/gui/qt5/translations/TimerCard_fr.ts similarity index 100% rename from ui/translations/TimerCard_fr.ts rename to gui/qt5/translations/TimerCard_fr.ts diff --git a/ui/translations/TimerCard_it.ts b/gui/qt5/translations/TimerCard_it.ts similarity index 100% rename from ui/translations/TimerCard_it.ts rename to gui/qt5/translations/TimerCard_it.ts diff --git a/ui/translations/TimerCard_nl.ts b/gui/qt5/translations/TimerCard_nl.ts similarity index 100% rename from ui/translations/TimerCard_nl.ts rename to gui/qt5/translations/TimerCard_nl.ts diff --git a/ui/translations/TimerCard_pt.ts b/gui/qt5/translations/TimerCard_pt.ts similarity index 100% rename from ui/translations/TimerCard_pt.ts rename to gui/qt5/translations/TimerCard_pt.ts diff --git a/ui/translations/skill-ovos-timer.openvoiceos_de.qm b/gui/qt5/translations/skill-ovos-timer.openvoiceos_de.qm similarity index 100% rename from ui/translations/skill-ovos-timer.openvoiceos_de.qm rename to gui/qt5/translations/skill-ovos-timer.openvoiceos_de.qm diff --git a/ui/translations/skill-ovos-timer.openvoiceos_es.qm b/gui/qt5/translations/skill-ovos-timer.openvoiceos_es.qm similarity index 100% rename from ui/translations/skill-ovos-timer.openvoiceos_es.qm rename to gui/qt5/translations/skill-ovos-timer.openvoiceos_es.qm diff --git a/ui/translations/skill-ovos-timer.openvoiceos_fr.qm b/gui/qt5/translations/skill-ovos-timer.openvoiceos_fr.qm similarity index 100% rename from ui/translations/skill-ovos-timer.openvoiceos_fr.qm rename to gui/qt5/translations/skill-ovos-timer.openvoiceos_fr.qm diff --git a/ui/translations/skill-ovos-timer.openvoiceos_it.qm b/gui/qt5/translations/skill-ovos-timer.openvoiceos_it.qm similarity index 100% rename from ui/translations/skill-ovos-timer.openvoiceos_it.qm rename to gui/qt5/translations/skill-ovos-timer.openvoiceos_it.qm diff --git a/ui/translations/skill-ovos-timer.openvoiceos_nl.qm b/gui/qt5/translations/skill-ovos-timer.openvoiceos_nl.qm similarity index 100% rename from ui/translations/skill-ovos-timer.openvoiceos_nl.qm rename to gui/qt5/translations/skill-ovos-timer.openvoiceos_nl.qm diff --git a/ui/translations/skill-ovos-timer.openvoiceos_pt.qm b/gui/qt5/translations/skill-ovos-timer.openvoiceos_pt.qm similarity index 100% rename from ui/translations/skill-ovos-timer.openvoiceos_pt.qm rename to gui/qt5/translations/skill-ovos-timer.openvoiceos_pt.qm diff --git a/scripts/bump_alpha.py b/scripts/bump_alpha.py deleted file mode 100644 index e465543b..00000000 --- a/scripts/bump_alpha.py +++ /dev/null @@ -1,18 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - else: - print(line.rstrip('\n')) diff --git a/scripts/bump_build.py b/scripts/bump_build.py deleted file mode 100644 index 61099f87..00000000 --- a/scripts/bump_build.py +++ /dev/null @@ -1,21 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_BUILD" -alpha_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - elif line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/bump_major.py b/scripts/bump_major.py deleted file mode 100644 index 2610fbb1..00000000 --- a/scripts/bump_major.py +++ /dev/null @@ -1,27 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_MAJOR" -minor_var_name = "VERSION_MINOR" -build_var_name = "VERSION_BUILD" -alpha_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - elif line.startswith(minor_var_name): - print(f"{minor_var_name} = 0") - elif line.startswith(build_var_name): - print(f"{build_var_name} = 0") - elif line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/bump_minor.py b/scripts/bump_minor.py deleted file mode 100644 index 86dfd9de..00000000 --- a/scripts/bump_minor.py +++ /dev/null @@ -1,24 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") -version_var_name = "VERSION_MINOR" -build_var_name = "VERSION_BUILD" -alpha_var_name = "VERSION_ALPHA" - -with open(version_file, "r", encoding="utf-8") as v: - for line in v.readlines(): - if line.startswith(version_var_name): - version = int(line.split("=")[-1]) - new_version = int(version) + 1 - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(version_var_name): - print(f"{version_var_name} = {new_version}") - elif line.startswith(build_var_name): - print(f"{build_var_name} = 0") - elif line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/migrate_locale.py b/scripts/migrate_locale.py deleted file mode 100644 index 2029931a..00000000 --- a/scripts/migrate_locale.py +++ /dev/null @@ -1,26 +0,0 @@ -import os -import shutil -from os.path import dirname, join, exists - -base_folder = dirname(dirname(__file__)) -res_folder = join(base_folder, "locale") -voc_folder = join(base_folder, "vocab") -dialog_folder = join(base_folder, "dialog") - -if exists(voc_folder): - for lang in os.listdir(voc_folder): - path = join(voc_folder, lang) - os.makedirs(join(res_folder, lang), exist_ok=True) - for f in os.listdir(path): - shutil.move(join(path, f), join(res_folder, lang, f)) - shutil.rmtree(path) - shutil.rmtree(voc_folder) - -if exists(dialog_folder): - for lang in os.listdir(dialog_folder): - path = join(dialog_folder, lang) - os.makedirs(join(res_folder, lang), exist_ok=True) - for f in os.listdir(path): - shutil.move(join(path, f), join(res_folder, lang, f)) - shutil.rmtree(path) - shutil.rmtree(dialog_folder) diff --git a/scripts/prepare_skillstore.py b/scripts/prepare_skillstore.py deleted file mode 100644 index dee6b080..00000000 --- a/scripts/prepare_skillstore.py +++ /dev/null @@ -1,76 +0,0 @@ -from ovos_skills_manager import SkillEntry -from os.path import exists, join, dirname -from shutil import rmtree -import os -from os import makedirs -import json -from ovos_utils.bracket_expansion import expand_parentheses, expand_options - - -branch = "dev" -repo = "skill-template-repo" -author = "OpenVoiceOS" - -url = f"https://github.com/{author}/{repo}@{branch}" - -skill = SkillEntry.from_github_url(url) -tmp_skills = "/tmp/osm_installed_skills" -skill_folder = f"{tmp_skills}/{skill.uuid}" - -base_dir = dirname(dirname(__file__)) -desktop_dir = join(base_dir, "res", "desktop") -android_ui = join(base_dir, "ui", "+android") -makedirs(desktop_dir, exist_ok=True) - -readme = join(base_dir, "readme.md") -jsonf = join(desktop_dir, "skill.json") -desktopf = join(desktop_dir, f"{repo}.desktop") -skill_code = join(base_dir, "__init__.py") - -res_folder = join(base_dir, "locale", "en-us") - - -def read_samples(path): - samples = [] - with open(path) as fi: - for _ in fi.read().split("\n"): - if _ and not _.strip().startswith("#"): - samples += expand_options(_) - return samples - -samples = [] -for root, folders, files in os.walk(res_folder): - for f in files: - if f.endswith(".intent"): - samples += read_samples(join(root, f)) -skill._data["examples"] = list(set(samples)) - -has_android = exists(android_ui) -with open(skill_code) as f: - has_homescreen = f"{repo}.{author}.home" in f.read() - -if not exists(readme): - with open(readme, "w") as f: - f.write(skill.generate_readme()) - -if has_homescreen and not exists(desktopf): - with open(desktopf, "w") as f: - f.write(skill.desktop_file) - -if not exists(jsonf): - data = skill.json - with open(jsonf, "w") as f: - if not has_android or not has_homescreen: - data.pop("android") - if not has_homescreen: - data.pop("desktop") - data["desktopFile"] = False -else: - with open(jsonf) as f: - data = json.load(f) - -# set dev branch -data["branch"] = "dev" - -with open(jsonf, "w") as f: - json.dump(data, f, indent=4) diff --git a/scripts/prepare_translations.py b/scripts/prepare_translations.py deleted file mode 100644 index 01a674d0..00000000 --- a/scripts/prepare_translations.py +++ /dev/null @@ -1,53 +0,0 @@ -"""this script should run every time the contents of the locale folder change -except if PR originated from @gitlocalize-app -TODO - on commit to dev -""" - -import json -from os.path import dirname -import os - -locale = f"{dirname(dirname(__file__))}/locale" -tx = f"{dirname(dirname(__file__))}/translations" - - -for lang in os.listdir(locale): - intents = {} - dialogs = {} - vocs = {} - regexes = {} - for root, _, files in os.walk(f"{locale}/{lang}"): - b = root.split(f"/{lang}")[-1] - - for f in files: - if b: - fid = f"{b}/{f}" - else: - fid = f - with open(f"{root}/{f}") as fi: - strings = [l.replace("{{", "{").replace("}}", "}") - for l in fi.read().split("\n") if l.strip() - and not l.startswith("#")] - - if fid.endswith(".intent"): - intents[fid] = strings - elif fid.endswith(".dialog"): - dialogs[fid] = strings - elif fid.endswith(".voc"): - vocs[fid] = strings - elif fid.endswith(".rx"): - regexes[fid] = strings - - os.makedirs(f"{tx}/{lang.lower()}", exist_ok=True) - if intents: - with open(f"{tx}/{lang.lower()}/intents.json", "w") as f: - json.dump(intents, f, indent=4) - if dialogs: - with open(f"{tx}/{lang.lower()}/dialogs.json", "w") as f: - json.dump(dialogs, f, indent=4) - if vocs: - with open(f"{tx}/{lang.lower()}/vocabs.json", "w") as f: - json.dump(vocs, f, indent=4) - if regexes: - with open(f"{tx}/{lang.lower()}/regexes.json", "w") as f: - json.dump(regexes, f, indent=4) diff --git a/scripts/release_skillstore.py b/scripts/release_skillstore.py deleted file mode 100644 index a176d890..00000000 --- a/scripts/release_skillstore.py +++ /dev/null @@ -1,41 +0,0 @@ -import json -from os.path import join, dirname - -base_dir = dirname(dirname(__file__)) - - -def get_version(): - """ Find the version of the package""" - version_file = join(base_dir, 'version.py') - major, minor, build, alpha = (None, None, None, None) - with open(version_file) as f: - for line in f: - if 'VERSION_MAJOR' in line: - major = line.split('=')[1].strip() - elif 'VERSION_MINOR' in line: - minor = line.split('=')[1].strip() - elif 'VERSION_BUILD' in line: - build = line.split('=')[1].strip() - elif 'VERSION_ALPHA' in line: - alpha = line.split('=')[1].strip() - - if ((major and minor and build and alpha) or - '# END_VERSION_BLOCK' in line): - break - version = f"{major}.{minor}.{build}" - if alpha and int(alpha) > 0: - version += f"a{alpha}" - return version - - -desktop_dir = join(base_dir, "res", "desktop") - -jsonf = join(desktop_dir, "skill.json") - -with open(jsonf) as f: - data = json.load(f) - -data["branch"] = "v" + get_version() - -with open(jsonf, "w") as f: - json.dump(data, f, indent=4) diff --git a/scripts/remove_alpha.py b/scripts/remove_alpha.py deleted file mode 100644 index fca73420..00000000 --- a/scripts/remove_alpha.py +++ /dev/null @@ -1,13 +0,0 @@ -import fileinput -from os.path import join, dirname - - -version_file = join(dirname(dirname(__file__)), "version.py") - -alpha_var_name = "VERSION_ALPHA" - -for line in fileinput.input(version_file, inplace=True): - if line.startswith(alpha_var_name): - print(f"{alpha_var_name} = 0") - else: - print(line.rstrip('\n')) diff --git a/scripts/translate.py b/scripts/translate.py deleted file mode 100644 index 43b06872..00000000 --- a/scripts/translate.py +++ /dev/null @@ -1,157 +0,0 @@ -from os.path import dirname, join, isdir, exists -from pathlib import Path -import shutil -import os -import re -from ovos_utils.bracket_expansion import expand_options -from ovos_translate_plugin_deepl import DeepLTranslator - - -API_KEY = os.getenv("API_KEY") -if not API_KEY: - raise ValueError - -single_lang = os.getenv("TARGET_LANG") -target_langs = (single_lang,) if single_lang else ("de-de", - "ca-es", - "cs-cz", - "da-dk", - "es-es", - "fr-fr", - "hu-hu", - "it-it", - "nl-nl", - "pl-pl", - "pt-pt", - "ru-ru", - "sv-fi", - "sv-se") - - -base_folder = dirname(dirname(__file__)) -res_folder = join(base_folder, "locale") - -# old structure -old_voc_folder = join(base_folder, "vocab") -old_dialog_folder = join(base_folder, "dialog") -old_res_folder = [old_voc_folder, old_dialog_folder] - -src_lang="en-us" -src_files={} -# note: regex/namedvalues are just copied, this cant be auto translated reliably -ext = [".voc", ".dialog", ".intent", ".entity", ".rx", ".value", ".word"] -untranslated = [".rx", ".value", ".entity"] - -tx = DeepLTranslator({"api_key": API_KEY}) - - -def file_location(f: str, base: str) -> bool: - for root, dirs, files in os.walk(base): - for file in files: - if f == file: - return join(root, file) - return None - -def translate(lines: list, target_lang: str) -> list: - translations = [] - for line in lines: - replacements = dict() - for num, var in enumerate(re.findall(r"(?:{{|{)[ a-zA-Z0-9_]*(?:}}|})", line)): - line = line.replace(var, f'@{num}', 1) - replacements[f'@{num}'] = var - try: - translated = tx.translate(line, target=target_lang, source=src_lang) - except Exception as e: - continue - for num, var in replacements.items(): - translated = translated.replace(num, var) - translations.append(translated) - - return translations - - -def entities(file: str) -> set: - vars = set() - if not exists(file): - return vars - - lines = get_lines(file) - for line in lines: - for var in re.findall(r"(?:{{|{)[ a-zA-Z0-9_]*(?:}}|})", line): - vars.add(var) - return vars - - -def get_lines(file: str): - with open(file, "r") as f: - # entity files often include #-placeholder - if file.endswith(".entity"): - lines = [exp for l in f.read().split("\n") for exp - in expand_options(l) if l] - else: - lines = [exp for l in f.read().split("\n") for exp - in expand_options(l) if l and not l.startswith("#")] - return lines - - -def migrate_locale(folder): - for lang in os.listdir(folder): - path = join(folder, lang) - for root, dirs, files in os.walk(path): - for file in files: - if file_location(file, join(res_folder, lang)) is None: - rel_path = root.replace(folder, "").lstrip("/") - new_path = join(res_folder, rel_path) - os.makedirs(new_path, exist_ok=True) - shutil.move(join(root, file), - join(new_path, file)) - shutil.rmtree(path) - shutil.rmtree(folder) - - -for folder in old_res_folder: - if not isdir(folder): - continue - migrate_locale(folder) - -src_folder = join(res_folder, src_lang) -for root, dirs, files in os.walk(src_folder): - if src_lang not in root: - continue - for f in files: - if any(f.endswith(e) for e in ext): - file_path = join(root, f) - rel_path = file_path.replace(src_folder, "").lstrip("/") - src_files[rel_path] = file_path - -for lang in target_langs: - # service cant translate - if not tx.get_langcode(lang): - continue - for rel_path, src in src_files.items(): - filename = Path(rel_path).name - dst = file_location(filename, join(res_folder, lang)) or \ - join(res_folder, lang, rel_path) - if entities(src) != entities(dst): - if exists(dst): - os.remove(dst) - elif not exists(dst): - pass - else: - continue - os.makedirs(dirname(dst), exist_ok=True) - - lines = get_lines(src) - if any(filename.endswith(e) for e in untranslated): - tx_lines = lines - is_translated = False - else: - tx_lines = translate(lines, lang) - is_translated = True - if tx_lines: - tx_lines = list(set(tx_lines)) - with open(dst, "w") as f: - if is_translated: - f.write(f"# auto translated from {src_lang} to {lang}\n") - for translated in set(tx_lines): - f.write(translated + "\n") diff --git a/setup.py b/setup.py index f58c6167..1ed3d5bb 100644 --- a/setup.py +++ b/setup.py @@ -90,7 +90,7 @@ def get_requirements(requirements_filename: str): def find_resource_files(): - resource_base_dirs = ("locale", "ui", "vocab", "dialog", "regex", "res") + resource_base_dirs = ("locale", "gui", "vocab", "dialog", "regex", "res") package_data = ["skill.json"] for res in resource_base_dirs: if path.isdir(path.join(BASE_PATH, res)): diff --git a/test/osm_tests.py b/test/osm_tests.py deleted file mode 100644 index 01ba1a4b..00000000 --- a/test/osm_tests.py +++ /dev/null @@ -1,29 +0,0 @@ -# write your first unittest! -import unittest -from os.path import exists -from shutil import rmtree - -from ovos_skills_manager import SkillEntry - -branch = "dev" -url = f"https://github.com/OpenVoiceOS/ovos-skill-alerts@{branch}" - -class TestOSM(unittest.TestCase): - @classmethod - def setUpClass(self): - self.skill_id = "ovos-skill-alerts.openvoiceos" - - def test_osm_install(self): - skill = SkillEntry.from_github_url(url) - tmp_skills = "/tmp/osm_installed_skills" - skill_folder = f"{tmp_skills}/{skill.uuid}" - - if exists(skill_folder): - rmtree(skill_folder) - - updated = skill.install(folder=tmp_skills, default_branch=branch) - self.assertEqual(updated, True) - self.assertTrue(exists(skill_folder)) - - updated = skill.install(folder=tmp_skills, default_branch=branch) - self.assertEqual(updated, False)