Add API update controls #22

This commit is contained in:
2026-07-29 20:11:26 +02:00
parent 6cdf1f5d49
commit 5752e9fb2f
4 changed files with 104 additions and 0 deletions
+14
View File
@@ -1,6 +1,7 @@
from __future__ import annotations
import os
import shlex
from pathlib import Path
from pydantic import BaseModel, Field
@@ -21,6 +22,9 @@ class Settings(BaseModel):
sonarr_url: str | None = None
sonarr_api_key: str | None = None
auth_token: str | None = None
restart_command: list[str] = Field(default_factory=lambda: ["systemctl", "restart", "importarr.service"])
update_command: list[str] = Field(default_factory=lambda: ["sh", "deploy/repo-upgrade.sh"])
control_command_timeout_seconds: int = Field(default=120, ge=1)
bind_host: str = "127.0.0.1"
bind_port: int = 8765
poll_seconds: int = Field(default=60, ge=5)
@@ -42,6 +46,9 @@ class Settings(BaseModel):
sonarr_url=os.getenv("IMPORTARR_SONARR_URL"),
sonarr_api_key=_env_secret("IMPORTARR_SONARR_API_KEY"),
auth_token=_env_secret("IMPORTARR_AUTH_TOKEN"),
restart_command=_env_command("IMPORTARR_RESTART_COMMAND", ["systemctl", "restart", "importarr.service"]),
update_command=_env_command("IMPORTARR_UPDATE_COMMAND", ["sh", "deploy/repo-upgrade.sh"]),
control_command_timeout_seconds=int(os.getenv("IMPORTARR_CONTROL_COMMAND_TIMEOUT_SECONDS", "120")),
bind_host=os.getenv("IMPORTARR_BIND_HOST", "127.0.0.1"),
bind_port=int(os.getenv("IMPORTARR_BIND_PORT", "8765")),
poll_seconds=int(os.getenv("IMPORTARR_POLL_SECONDS", "60")),
@@ -63,3 +70,10 @@ def _env_secret(name: str) -> str | None:
if file_value:
return Path(file_value).read_text(encoding="utf-8").strip()
return os.getenv(name)
def _env_command(name: str, default: list[str]) -> list[str]:
value = os.getenv(name)
if not value:
return default
return shlex.split(value)