mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 08:04:56 +03:00
86a959a354
Add cross-platform Python alternatives alongside existing PowerShell scripts. PS1 remains the default runtime; Python is opt-in via switch scripts. All parameters are identical between runtimes. New files: - 58 Python scripts in .claude/skills/*/scripts/*.py - scripts/switch-to-python.py and switch-to-powershell.py - docs/python-porting-guide.md - __pycache__/ added to .gitignore Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
56 lines
2.1 KiB
Python
56 lines
2.1 KiB
Python
#!/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():
|
|
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()
|