Files
Ultroid-fork/fix_addon_imports.py
Cursor User 7a384c7b14 Add addon import fixer script
- Created fix_addon_imports.py to fix ultroid_cmd imports in addon files
- Handles cases where addons/ directory is in .gitignore and doesn't get updated
- Fixes multiple import patterns automatically
- Can be run on server to fix imports without affecting git tracking
- Provides detailed feedback on files processed and fixed
2025-06-18 18:15:05 +02:00

100 lines
3.0 KiB
Python
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""
Fix Addon Import Script
This script fixes the ultroid_cmd import in addon files.
"""
import os
import re
from pathlib import Path
def fix_imports_in_file(file_path):
"""Fix imports in a single file."""
try:
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# Track if any changes were made
changes_made = False
original_content = content
# Fix various import patterns
fixes = [
# Fix: from pyUltroid import ultroid_cmd
(r'from pyUltroid import ultroid_cmd', 'from pyUltroid._misc._decorators import ultroid_cmd'),
# Fix: from pyUltroid.fns.decorators import ultroid_cmd
(r'from pyUltroid\.fns\.decorators import ultroid_cmd', 'from pyUltroid._misc._decorators import ultroid_cmd'),
# Fix any other variations
(r'from \.fns\.decorators import ultroid_cmd', 'from pyUltroid._misc._decorators import ultroid_cmd'),
]
for old_pattern, new_import in fixes:
if re.search(old_pattern, content):
content = re.sub(old_pattern, new_import, content)
changes_made = True
# Write back if changes were made
if changes_made and content != original_content:
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
print(f"✅ Fixed imports in: {file_path}")
return True
else:
print(f" No changes needed: {file_path}")
return False
except Exception as e:
print(f"❌ Error processing {file_path}: {e}")
return False
def main():
"""Main function to fix imports in all addon files."""
print("🔧 Ultroid Addon Import Fixer")
print("=" * 40)
# Get the current directory
current_dir = Path.cwd()
addons_dir = current_dir / "addons"
if not addons_dir.exists():
print(f"❌ Addons directory not found: {addons_dir}")
return
print(f"📁 Scanning directory: {addons_dir}")
# Find all Python files in addons directory
python_files = list(addons_dir.glob("**/*.py"))
if not python_files:
print("❌ No Python files found in addons directory")
return
print(f"📄 Found {len(python_files)} Python files")
print()
fixed_count = 0
# Process each file
for py_file in python_files:
if py_file.name == "__init__.py":
continue # Skip __init__.py files
if fix_imports_in_file(py_file):
fixed_count += 1
print()
print("=" * 40)
print(f"✅ Import fix completed!")
print(f"📊 Files processed: {len(python_files)}")
print(f"🔧 Files fixed: {fixed_count}")
if fixed_count > 0:
print()
print("🔄 Restart your bot to apply the changes:")
print(" ./startup")
if __name__ == "__main__":
main()