#!/usr/bin/env python3
"""Refresh the practical dashboard using only free/no-subscription sources."""

from __future__ import annotations

import argparse
import subprocess
import sys
from pathlib import Path


ROOT = Path(__file__).resolve().parent


def run(command: list[str], *, input_text: str | None = None) -> subprocess.CompletedProcess:
    return subprocess.run(
        command,
        cwd=ROOT.parent,
        input=input_text,
        text=True,
        capture_output=True,
        check=False,
        timeout=60,
    )


def main() -> int:
    parser = argparse.ArgumentParser()
    parser.add_argument("--send-kakao", action="store_true", help="Send the refreshed Kakao summary after updating state.")
    args = parser.parse_args()

    steps = [
        ["python3", str(ROOT / "weekend_flow_tracker.py")],
        ["python3", str(ROOT / "update_live_account_state.py")],
    ]
    for command in steps:
        result = run(command)
        if result.returncode != 0:
            print(result.stdout, end="")
            print(result.stderr, end="", file=sys.stderr)
            print(f"FAILED: {' '.join(command)}", file=sys.stderr)
            return result.returncode
        print(result.stdout, end="")

    if args.send_kakao:
        result = run(
            [
                "python3",
                str(ROOT / "send_dashboard_kakao.py"),
                "--title",
                "US Equity 자동 요약",
            ]
        )
        print(result.stdout, end="")
        if result.returncode != 0:
            print(result.stderr, end="", file=sys.stderr)
            return result.returncode

    print("OK: free-source dashboard refresh complete.")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())
