Mo basics

This commit is contained in:
Piotr Dec 2025-11-02 22:15:12 +01:00
parent 1341b022d4
commit 8ee950940e
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0
3 changed files with 44 additions and 26 deletions

View file

@ -8,21 +8,23 @@ from injectable import injectable, Autowired, autowired
from app.config import get_settings
from app.model.webhook import WoodpeckerEvent
from app.services import Passwords, GitService, DockerService
from app.services import GitService, DockerService
from app.services.mo import Mo
logger = logging.getLogger(__name__)
class WoodpeckerRunner(Process):
def __init__(self, git: GitService, docker: DockerService, passwords: Passwords,
def __init__(self, git: GitService, docker: DockerService, mo: Mo,
success_callback=None, error_callback=None):
super().__init__(daemon=True)
self._git = git
self._docker = docker
self._passwords = passwords
self._mo = mo
self._success_callback = success_callback
self._error_callback = error_callback
self._event: WoodpeckerEvent | None = None
self._root = get_settings().git.path
def process_event(self, event: WoodpeckerEvent):
self._event = event
@ -34,12 +36,12 @@ class WoodpeckerRunner(Process):
if service is None:
logger.info("No service found.")
return self._success_callback()
service_path = f"{get_settings().git.path}/compose/{service}/docker-compose.yml"
service_path = f"{self._root}/compose/{service}/docker-compose.yml"
self._git.checkout(self._event.commit)
for file in self._event.files:
if file.__contains__('.mo.'):
pass
self._docker.reload(Path(service_path))
self._mo.process(Path(f"{self._root}{file}").absolute())
self._docker.reload(Path(service_path).absolute())
return self._success_callback()
except Exception as e:
@ -63,8 +65,8 @@ class WoodpeckerRunner(Process):
@injectable(singleton=True)
class Woodpecker:
@autowired
def __init__(self, passwords: Annotated[Passwords, Autowired]):
self._passwords = passwords
def __init__(self, mo: Annotated[Mo, Autowired]):
self._mo = mo
self._git = GitService()
self._docker = DockerService()
self._runner: WoodpeckerRunner | None = None
@ -82,7 +84,8 @@ class Woodpecker:
def _start_runner(self, event: WoodpeckerEvent):
with self._lock:
self._runner = WoodpeckerRunner(self._git, self._docker, self._on_runner_completed)
self._runner = WoodpeckerRunner(self._git, self._docker, self._mo,
self._on_runner_completed, self._on_runner_error)
self._runner.process_event(event)
def _on_runner_completed(self):