#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Docker Compose 部署模块
"""

import os
import subprocess
from pathlib import Path
from .log import Logger


def run_docker_compose(compose_dir, service_name):
    """
    执行 docker-compose 命令

    参数：
        compose_dir: docker-compose.yml 所在目录
        service_name: 要构建和启动的服务名称

    返回：
        bool: 成功返回 True，失败返回 False
    """
    try:
        # 转换为绝对路径
        compose_dir = Path(compose_dir).resolve()

        Logger.separator()
        Logger.info("开始 Docker 部署")
        Logger.separator()
        Logger.info(f"执行目录: {compose_dir}")
        Logger.info(f"服务名称: {service_name}")

        # 检查目录是否存在
        if not compose_dir.exists():
            Logger.error(f"目录不存在: {compose_dir}")
            return False

        # 检查 docker-compose.yml 是否存在
        compose_file = compose_dir / "docker-compose.yml"
        if not compose_file.exists():
            Logger.error(f"docker-compose.yml 不存在: {compose_file}")
            return False

        # 构建镜像
        if not Logger.run_command(f"docker-compose build --no-cache {service_name}", compose_dir):
            Logger.error(f"镜像构建失败: {service_name}")
            return False

        Logger.info(f"镜像构建成功: {service_name}")

        # 启动服务
        if not Logger.run_command(f"docker-compose up -d {service_name}", compose_dir):
            Logger.error(f"服务启动失败: {service_name}")
            return False

        Logger.info(f"服务启动成功: {service_name}")
        Logger.info(f"Docker 部署完成: {service_name}")
        return True

    except Exception as e:
        Logger.error(f"Docker 部署异常: {e}")
        return False
