"""ファイル生成ヘッダー生成モジュール

.lay.py / .lay.yaml ファイルの警告ヘッダーを生成します。
"""

from datetime import UTC, datetime


def generate_python_header(
    source_path: str,
    add_header: bool = True,
    include_source: bool = True,
) -> str:
    """Python(.lay.py)ファイルの警告ヘッダーを生成

    Args:
        source_path: ソースファイルのパス（YAML→Pythonの場合はYAMLファイルパス）
        add_header: 警告ヘッダーを追加するか
        include_source: ソースファイルパスを記録するか

    Returns:
        生成されたヘッダー文字列
    """
    if not add_header:
        return ""

    lines = [
        '"""',
        "====================================",
        "pylay自動生成ファイル",
        "このファイルを直接編集しないでください",
        "次回の pylay types 実行時に削除・再生成されます",
        "====================================",
    ]

    if include_source:
        generated_at = datetime.now(UTC).isoformat()
        lines.append(f"Generated by: pylay types {source_path}")
        lines.append(f"Source: {source_path}")
        lines.append(f"Generated at: {generated_at}")

    lines.append('"""')
    lines.append("")

    return "\n".join(lines)


def generate_yaml_header(
    source_path: str,
    add_header: bool = True,
    include_source: bool = True,
) -> str:
    """YAML(.lay.yaml)ファイルの警告ヘッダーを生成

    Args:
        source_path: ソースファイルのパス（Python→YAMLの場合はPythonファイルパス）
        add_header: 警告ヘッダーを追加するか
        include_source: ソースファイルパスを記録するか

    Returns:
        生成されたヘッダー文字列
    """
    if not add_header:
        return ""

    lines = [
        "# ====================================",
        "# pylay自動生成ファイル",
        "# このファイルを直接編集しないでください",
        "# 次回の pylay yaml 実行時に削除・再生成されます",
        "# ====================================",
    ]

    if include_source:
        generated_at = datetime.now(UTC).isoformat()
        lines.append(f"# Generated by: pylay yaml {source_path}")
        lines.append(f"# Source: {source_path}")
        lines.append(f"# Generated at: {generated_at}")

    lines.append("")

    return "\n".join(lines)
