#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
按固定间隔重复执行指定命令。

用法: ypp repeat -i <秒> -- <命令> [参数...]
例如: ypp repeat -i 2 -- ls -la
      ypp repeat -i 5 -- git status
按 Ctrl+C 退出。
"""

from __future__ import annotations

import sys
import time
from typing import List


def command_repeat(interval_sec: float, command: List[str]) -> None:
    """按间隔时间重复执行命令。

    Args:
        interval_sec: 间隔秒数（每次命令结束后等待）
        command: 要执行的命令及参数列表，如 ['ls', '-la']
    """
    if not command or not any(c.strip() for c in command):
        print("错误: 请指定要执行的命令。用法: ypp repeat -i <秒> -- <命令> [参数...]", file=sys.stderr)
        sys.exit(2)

    try:
        from .common import run_command
    except ImportError:
        from common import run_command

    run_count = 0
    try:
        while True:
            run_count += 1
            print(f"\n--- 第 {run_count} 次执行 (间隔 {interval_sec}s) ---", file=sys.stderr)
            run_command(command, interactive=True)
            time.sleep(interval_sec)
    except KeyboardInterrupt:
        print(f"\n已退出，共执行 {run_count} 次。", file=sys.stderr)
