keep symlinks after updating

This commit is contained in:
Mathieu Broillet 2024-10-05 10:55:04 +02:00
parent c0d9e168b3
commit 6450001541
Signed by: mathieu
GPG Key ID: A08E484FE95074C1
2 changed files with 25 additions and 1 deletions

View File

@ -39,7 +39,6 @@ class Stack:
self.pid = config.get(f"{self.name}-pid")
def install(self):
if self.is_installed():
self.update()
@ -74,8 +73,10 @@ class Stack:
self.stop()
logger.info(f"Updating {self.name}")
symlinks = utils.find_symlink_in_folder(self.path)
self.git_pull(folder)
self._update()
utils.create_symlinks(symlinks)
if status:
self.start()

View File

@ -1,7 +1,9 @@
import importlib
import json
import os
import shutil
import subprocess
from pathlib import Path
from urllib import request, error
from core.stack import Stack
@ -79,3 +81,24 @@ def load_service_from_string(service: str) -> Stack:
met = getattr(module, service_name)
return met()
def find_symlink_in_folder(folder: str):
symlinks = {}
for file in Path(folder).rglob("webui/**"):
if file.is_symlink():
symlinks[file] = file.resolve()
return symlinks
def create_symlinks(symlinks: dict[Path, Path]):
for target, link in symlinks.items():
logger.debug(f"(re)Creating symlink: {link} -> {target}")
if target.is_symlink():
target.unlink()
if target.exists() and target.is_dir():
shutil.rmtree(target)
os.symlink(link, target)