import subprocess
import os
import sys

def run_script(script_name, vault, item, token):
    """指定されたスクリプトを実行"""
    script_path = f"/app/recipes/{script_name}"

    # スクリプトの存在チェック
    if not os.path.exists(script_path):
        print(f"❌ 指定されたスクリプトが見つかりません: {script_name}")
        exit(1)

    print(f"🚀 {script_name} 実行開始！ Vault: {vault}, Item: {item}")

    env = os.environ.copy()
    env["VAULT_NAME"] = vault
    env["ITEM_NAME"] = item
    env["OP_SERVICE_ACCOUNT_TOKEN"] = token  # ← 追加

    result = subprocess.run(
        ["python3", script_path],
        capture_output=True, text=True, env=env
    )

    print(f"🔍 {script_name} STDOUT:\n{result.stdout}")
    print(f"⚠️ {script_name} STDERR:\n{result.stderr}")

    if result.returncode == 0:
        print(f"✅ {script_name} 完了！")
    else:
        print(f"⚠️ {script_name} 失敗！\n{result.stderr}")
        exit(1)

if __name__ == "__main__":
    print("🚀 Playwright Runner 起動！")

    # 必要な環境変数があるかチェック
    token = os.getenv("OP_SERVICE_ACCOUNT_TOKEN")
    if not token:
        print("❌ OP_SERVICE_ACCOUNT_TOKEN が設定されていません！\n使用例: docker run -e OP_SERVICE_ACCOUNT_TOKEN='your_token' --rm my-playwright-container slack_export.py 'vault名' 'item名'")
        exit(1)

    # 引数チェック
    if len(sys.argv) < 4:
        print("❌ 引数が不足しています！\n使用例: docker run -e OP_SERVICE_ACCOUNT_TOKEN='your_token' --rm my-playwright-container slack_export.py 'vault名' 'item名'")
        exit(1)

    script_name = sys.argv[1]  # 実行する .py ファイル
    vault_name = sys.argv[2]   # 1Password Vault 名
    item_name = sys.argv[3]    # 1Password Item 名

    run_script(script_name, vault_name, item_name, token)
    print("✅ Playwright Runner 完了！")
