Files
status-python-sdk/bot/utils.py
T

45 lines
1.6 KiB
Python
Raw Normal View History

2026-06-18 07:39:20 +03:00
import shutil, os, subprocess, sys, time
2026-05-24 20:46:07 +03:00
from pathlib import Path
2026-06-18 07:39:20 +03:00
from .logger import Logger
2026-05-24 20:46:07 +03:00
2026-06-18 07:39:20 +03:00
def launch_docker_container(wait_seconds: int = 5):
2026-05-24 20:46:07 +03:00
"""
Launch the Status Backend Docker container using `docker-compose.yaml`
2026-06-18 07:39:20 +03:00
Parameters:
- `wait_seconds` - nunmber of seconds to wait before the code resumes. Sleep prevents calling `class Account` faster than launching the docker container. This only happens when the container already exists and it is must be turned on.
2026-05-24 20:46:07 +03:00
"""
2026-06-18 07:39:20 +03:00
logger = Logger()
platform = sys.platform
is_windows = platform == "win32"
2026-05-24 20:46:07 +03:00
if not shutil.which("docker"):
raise Exception("Please install Docker.")
2026-06-18 07:39:20 +03:00
logger.info(f"Running Docker on {platform}")
2026-05-24 20:46:07 +03:00
DOCKER_COMPOSE_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "docker-compose.yaml")
docker_path = DOCKER_COMPOSE_PATH
if is_windows:
p = Path(DOCKER_COMPOSE_PATH)
drive = p.drive.rstrip(":").lower()
docker_path = f"/mnt/{drive}/" + "/".join(p.parts[1:])
cmd = ["docker", "compose", "-f", docker_path, "up", "-d"]
if is_windows:
if not shutil.which("wsl"):
raise Exception("Please install wsl - https://learn.microsoft.com/en-us/windows/wsl/install.")
cmd.insert(0, "wsl")
2026-06-18 07:39:20 +03:00
logger.info(f"Running:\n{' '.join(cmd)}")
2026-05-24 20:46:07 +03:00
result = subprocess.run(
cmd,
cwd=os.path.dirname(DOCKER_COMPOSE_PATH),
stderr=subprocess.PIPE,
text=True,
)
2026-06-17 18:56:45 +03:00
2026-05-24 20:46:07 +03:00
if result.returncode != 0:
raise Exception(result.stderr.strip())
2026-06-18 07:39:20 +03:00
logger.info(f"Sleeping for {wait_seconds}s")
time.sleep(wait_seconds)