import argparse
from modules.image_translate_server import run_server
from modules.image_processor2 import ImageProcessor
from modules.loggerModule import Logger1
from modules.gpt_client import GPTClient
import sys, os


def get_base_dir():
    """
    실행 환경에 따라 base_dir을 설정하는 메서드.
    cx_Freeze로 패키징된 경우 실행 파일의 경로, 일반 Python 환경일 경우 __file__을 기준으로 설정.
    """
    if getattr(sys, 'frozen', False):  # 패키징된 경우
        base_dir = os.path.dirname(sys.executable)
        internal_dir = os.path.join(base_dir, 'lib')  # lib 디렉토리 포함
        if os.path.exists(internal_dir):  # lib 디렉토리가 존재하면 base_dir로 설정
            return internal_dir

    else:  # 일반 Python 실행 환경
        base_dir = os.path.dirname(os.path.abspath(__file__))
        debug_dir = os.path.join(base_dir)  # lib 디렉토리 포함
        return debug_dir

def main():
    parser = argparse.ArgumentParser(description="이미지 번역 FastAPI 서버 실행")
    parser.add_argument('--workers', type=int, default=2, help='최대 동시 워커 수 (2~8)')
    args = parser.parse_args()
    max_workers = max(2, min(args.workers, 8))

    # 실제 환경에 맞게 객체 생성
    logger = Logger1()
    gpt_client = GPTClient()
    base_dir = get_base_dir()
    font_path = os.path.join(base_dir, "modules", "fonts", "HakgyoansimDunggeunmisoTTFB.ttf")
    print(f"font_path: {font_path}")

    image_processor = ImageProcessor(logger, gpt_client, base_dir, font_path)

    port = run_server(image_processor, max_workers)
    print(f"서버가 127.0.0.1:{port} 에서 실행 중입니다.")

if __name__ == "__main__":
    main()
