#!/usr/bin/env python3
# switch-to-python v1.1 — Switch skill .md files to use Python scripts
# Source: https://github.com/Nikolay-Shirokov/cc-1c-skills
"""Replaces powershell.exe invocations with python in all .md files under .claude/skills/."""
import os, re, glob, sys

def main():
    print("Совет: используйте 'python scripts/switch.py --runtime python' (новый интерфейс)\n")
    repo_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    skills_dir = os.path.join(repo_root, '.claude', 'skills')

    # Collect all .md files in skill directories (SKILL.md, json-dsl.md, etc.)
    md_files = sorted(glob.glob(os.path.join(skills_dir, '*', '*.md')))
    if not md_files:
        print(f"Error: no .md files found in {skills_dir}", file=sys.stderr)
        sys.exit(1)

    rx = re.compile(r'powershell\.exe\s+(?:-NoProfile\s+)?-File\s+(.+?)\.ps1')
    switched = 0
    warnings = []

    for md_path in md_files:
        with open(md_path, 'r', encoding='utf-8') as f:
            content = f.read()

        matches = rx.findall(content)
        if not matches:
            continue

        # Check that .py files exist
        for m in matches:
            clean_path = m.lstrip("'")
            py_path = clean_path + '.py'
            py_full = os.path.join(repo_root, py_path)
            if not os.path.isfile(py_full):
                skill_name = os.path.basename(os.path.dirname(md_path))
                md_name = os.path.basename(md_path)
                warnings.append(f"  WARN: {py_path} not found (referenced in {skill_name}/{md_name})")

        new_content = rx.sub(r'python \1.py', content)
        if new_content != content:
            with open(md_path, 'w', encoding='utf-8') as f:
                f.write(new_content)
            skill_name = os.path.basename(os.path.dirname(md_path))
            md_name = os.path.basename(md_path)
            print(f"  [OK] {skill_name}/{md_name}")
            switched += 1

    print(f"\nSwitched {switched} file(s) to Python.")
    if warnings:
        print("\nWarnings (missing .py files):")
        for w in warnings:
            print(w)

if __name__ == '__main__':
    main()
