1
0
Fork 0
mirror of https://github.com/YunoHost/apps.git synced 2024-09-03 20:06:07 +02:00

refactor(translate_apps): create a base.py file to avoid duplicating code

This commit is contained in:
Laurent Peuch 2024-03-28 05:48:08 +01:00 committed by OniriCorpe
parent 4b1454d04c
commit 5ba6232cfc
3 changed files with 88 additions and 155 deletions

View file

@ -1,88 +1,11 @@
import os
import time import time
import json import json
import tempfile
import subprocess
from typing import Union
from pathlib import Path from pathlib import Path
import tomlkit import tomlkit
github_webhook_secret = open("github_webhook_secret", "r").read().strip() from base import Repository, login, token
login = open("login").read().strip()
token = open("token").read().strip()
weblate_token = open("weblate_token").read().strip()
my_env = os.environ.copy()
my_env["GIT_TERMINAL_PROMPT"] = "0"
my_env["GIT_AUTHOR_NAME"] = "yunohost-bot"
my_env["GIT_AUTHOR_EMAIL"] = "yunohost@yunohost.org"
my_env["GIT_COMMITTER_NAME"] = "yunohost-bot"
my_env["GIT_COMMITTER_EMAIL"] = "yunohost@yunohost.org"
my_env["GITHUB_USER"] = login
my_env["GITHUB_TOKEN"] = token
class Repository:
def __init__(self, url, branch):
self.url = url
self.branch = branch
def __enter__(self):
self.temporary_directory = tempfile.TemporaryDirectory()
self.path = Path(self.temporary_directory.name)
self.run_command(
[
"git",
"clone",
self.url,
"--single-branch",
"--branch",
self.branch,
self.path,
]
)
return self
def run_command(
self, command: Union[str, list], capture_output=False
) -> Union[str, int]:
if isinstance(command, str):
kwargs = {"args": f"cd {self.path} && {command}", "shell": True, "env": my_env}
elif isinstance(command, list):
kwargs = {"args": command, "cwd": self.path, "env": my_env}
if capture_output:
return subprocess.check_output(**kwargs).decode()
else:
print(f"\033[1;31m>>\033[0m \033[0;34m{command}\033[0m")
return subprocess.check_call(**kwargs)
def file_exists(self, file_name: str) -> bool:
return (self.path / file_name).exists()
def read_file(self, file_name: str) -> str:
return open((self.path / file_name).resolve(), "r").read()
def write_file(self, file_name: str, content: str) -> None:
open((self.path / file_name).resolve(), "w").write(content)
def remove_file(self, file_name: str) -> None:
os.remove(self.path / file_name)
def append_to_file(self, file_name: str, content: str) -> None:
open((self.path / file_name).resolve(), "a").write(content)
def __repr__(self):
return f'<__main__.Repository "{self.url.split("@")[1]}" path="{self.path}">'
def __exit__(self, *args, **kwargs):
pass
def extract_strings_to_translate_from_apps(apps, translations_repository): def extract_strings_to_translate_from_apps(apps, translations_repository):

View file

@ -0,0 +1,85 @@
import os
import tempfile
import subprocess
from typing import Union
from pathlib import Path
github_webhook_secret = open("github_webhook_secret", "r").read().strip()
login = open("login").read().strip()
token = open("token").read().strip()
weblate_token = open("weblate_token").read().strip()
my_env = os.environ.copy()
my_env["GIT_TERMINAL_PROMPT"] = "0"
my_env["GIT_AUTHOR_NAME"] = "yunohost-bot"
my_env["GIT_AUTHOR_EMAIL"] = "yunohost@yunohost.org"
my_env["GIT_COMMITTER_NAME"] = "yunohost-bot"
my_env["GIT_COMMITTER_EMAIL"] = "yunohost@yunohost.org"
my_env["GITHUB_USER"] = login
my_env["GITHUB_TOKEN"] = token
class Repository:
def __init__(self, url, branch):
self.url = url
self.branch = branch
def __enter__(self):
self.temporary_directory = tempfile.TemporaryDirectory()
self.path = Path(self.temporary_directory.name)
self.run_command(
[
"git",
"clone",
self.url,
"--single-branch",
"--branch",
self.branch,
self.path,
]
)
return self
def run_command(
self, command: Union[str, list], capture_output=False
) -> Union[str, int, subprocess.CompletedProcess]:
if isinstance(command, str):
kwargs = {
"args": f"cd {self.path} && {command}",
"shell": True,
"env": my_env,
}
elif isinstance(command, list):
kwargs = {"args": command, "cwd": self.path, "env": my_env}
if capture_output:
return subprocess.check_output(**kwargs).decode()
else:
print(f"\033[1;31m>>\033[0m \033[0;34m{command}\033[0m")
return subprocess.check_call(**kwargs)
def file_exists(self, file_name: str) -> bool:
return (self.path / file_name).exists()
def read_file(self, file_name: str) -> str:
return open((self.path / file_name).resolve(), "r").read()
def write_file(self, file_name: str, content: str) -> None:
open((self.path / file_name).resolve(), "w").write(content)
def remove_file(self, file_name: str) -> None:
os.remove(self.path / file_name)
def append_to_file(self, file_name: str, content: str) -> None:
open((self.path / file_name).resolve(), "a").write(content)
def __repr__(self):
return f'<__main__.Repository "{self.url.split("@")[1]}" path="{self.path}">'
def __exit__(self, *args, **kwargs):
pass

View file

@ -1,29 +1,13 @@
import os
import time import time
import json import json
import tempfile
import subprocess
from collections import defaultdict
from pathlib import Path from pathlib import Path
from typing import Union from collections import defaultdict
import wlc import wlc
import tomlkit import tomlkit
github_webhook_secret = open("github_webhook_secret", "r").read().strip() from base import Repository, login, token, weblate_token
login = open("login").read().strip()
token = open("token").read().strip()
weblate_token = open("weblate_token").read().strip()
my_env = os.environ.copy()
my_env["GIT_TERMINAL_PROMPT"] = "0"
my_env["GIT_AUTHOR_NAME"] = "yunohost-bot"
my_env["GIT_AUTHOR_EMAIL"] = "yunohost@yunohost.org"
my_env["GIT_COMMITTER_NAME"] = "yunohost-bot"
my_env["GIT_COMMITTER_EMAIL"] = "yunohost@yunohost.org"
def get_weblate_component(weblate, component_path): def get_weblate_component(weblate, component_path):
@ -35,65 +19,6 @@ def get_weblate_component(weblate, component_path):
return True return True
class Repository:
def __init__(self, url, branch):
self.url = url
self.branch = branch
def __enter__(self):
self.temporary_directory = tempfile.TemporaryDirectory()
self.path = Path(self.temporary_directory.name)
self.run_command(
[
"git",
"clone",
self.url,
"--single-branch",
"--branch",
self.branch,
self.path,
]
)
return self
def run_command(
self, command: Union[str, list], capture_output=False
) -> Union[str, int]:
if isinstance(command, str):
kwargs = {"args": f"cd {self.path} && {command}", "shell": True}
elif isinstance(command, list):
kwargs = {"args": command, "cwd": self.path}
if capture_output:
return subprocess.check_output(**kwargs).decode()
else:
print(f"\033[1;31m>>\033[0m \033[0;34m{command}\033[0m")
return subprocess.check_call(**kwargs)
def file_exists(self, file_name: str) -> bool:
return (self.path / file_name).exists()
def read_file(self, file_name: str) -> str:
return open((self.path / file_name).resolve(), "r").read()
def write_file(self, file_name: str, content: str) -> None:
open((self.path / file_name).resolve(), "w").write(content)
def remove_file(self, file_name: str) -> None:
os.remove(self.path / file_name)
def append_to_file(self, file_name: str, content: str) -> None:
open((self.path / file_name).resolve(), "a").write(content)
def __repr__(self):
return f'<__main__.Repository "{self.url.split("@")[1]}" path="{self.path}">'
def __exit__(self, *args, **kwargs):
pass
def extract_strings_to_translate_from_apps(apps, translations_repository): def extract_strings_to_translate_from_apps(apps, translations_repository):
weblate = wlc.Weblate(key=weblate_token, url="https://translate.yunohost.org/api/") weblate = wlc.Weblate(key=weblate_token, url="https://translate.yunohost.org/api/")