#!/usr/bin/env python3
"""
Tool to record asciinema sessions of JSONL replay files.

Usage:
    cai-asciinema path/to/file.jsonl 0.5

This tool wraps asciinema recording to capture replay sessions.
"""

import argparse
import os
import subprocess
import sys


def parse_arguments():
    """Parse command line arguments."""
    parser = argparse.ArgumentParser(
        description="Record asciinema sessions of JSONL replay files.",
        formatter_class=argparse.RawDescriptionHelpFormatter,
        epilog="""
Examples:
  cai-asciinema path/to/file.jsonl 0.5
  cai-asciinema conversation.jsonl 1.0
""",
    )

    parser.add_argument("jsonl_file", help="Path to the JSONL file containing conversation history")

    parser.add_argument("replay_delay", type=float, help="Time in seconds to wait between actions")

    parser.add_argument(
        "--output", "-o", type=str, help="Output file path for the recording (optional)"
    )

    return parser.parse_args()


def main():
    """Main function to record asciinema session."""
    args = parse_arguments()

    # Validate that the JSONL file exists
    if not os.path.exists(args.jsonl_file):
        print(f"Error: File {args.jsonl_file} not found", file=sys.stderr)
        sys.exit(1)

    # Build the command to record using the same Python interpreter
    replay_command = f"{sys.executable} tools/replay.py {args.jsonl_file} {args.replay_delay}"

    # Build asciinema command
    asciinema_cmd = ["asciinema", "rec", f"--command={replay_command}", "--overwrite"]

    # Add output file if specified
    if args.output:
        asciinema_cmd.append(args.output)

    print(f"Recording asciinema session for {args.jsonl_file} with delay {args.replay_delay}s...")
    print(f"Running: {' '.join(asciinema_cmd)}")

    try:
        # Execute the asciinema command
        result = subprocess.run(asciinema_cmd, check=True)
        # result = subprocess.run(replay_command, check=True)
        print("Recording completed successfully!")
        return result.returncode
    except subprocess.CalledProcessError as e:
        print(f"Error: asciinema recording failed with exit code {e.returncode}", file=sys.stderr)
        sys.exit(e.returncode)
    except FileNotFoundError:
        print("Error: asciinema not found. Please install asciinema first.", file=sys.stderr)
        print("Install with: pip install asciinema", file=sys.stderr)
        sys.exit(1)


if __name__ == "__main__":
    main()
