96 lines
3.5 KiB
Python
96 lines
3.5 KiB
Python
import os
|
||
import re
|
||
|
||
# Taranacak Ana Klasörler (Buradaki tüm .rs dosyaları taranacak)
|
||
SCAN_DIRS = [
|
||
"bizinikiwi/pezframe/identity",
|
||
"bizinikiwi/pezframe/revive"
|
||
]
|
||
|
||
# Değişim Kuralları (Regex -> Yeni String)
|
||
# Regex'ler boşluk toleranslıdır: [u8; 15] veya [u8;15] yakalar.
|
||
REPLACEMENTS = [
|
||
(r"\[\s*u8\s*;\s*15\s*\]", "[u8; 18]"),
|
||
(r"\[\s*u8\s*;\s*17\s*\]", "[u8; 20]")
|
||
]
|
||
|
||
# Ekstra Tekil Dosya Düzeltmeleri (Import hataları vb.)
|
||
SINGLE_FILE_FIXES = [
|
||
(
|
||
"pezcumulus/teyrchains/pezpallets/ping/src/lib.rs",
|
||
r"pezcumulus_pezpallet_xcm",
|
||
"pezcumulus_pezpallet_xcm"
|
||
)
|
||
]
|
||
|
||
def apply_fixes():
|
||
root_dir = os.getcwd()
|
||
print("--- Geniş Kapsamlı Tarama ve Düzeltme Başlıyor ---")
|
||
|
||
total_fixed = 0
|
||
|
||
# 1. Klasör Taraması (Array Boyutları İçin)
|
||
for scan_dir in SCAN_DIRS:
|
||
abs_scan_dir = os.path.join(root_dir, scan_dir)
|
||
if not os.path.exists(abs_scan_dir):
|
||
print(f"[UYARI] Klasör bulunamadı: {scan_dir}")
|
||
continue
|
||
|
||
print(f"Taranıyor: {scan_dir} ...")
|
||
|
||
for dirpath, _, filenames in os.walk(abs_scan_dir):
|
||
for filename in filenames:
|
||
if not filename.endswith(".rs"):
|
||
continue
|
||
|
||
filepath = os.path.join(dirpath, filename)
|
||
try:
|
||
with open(filepath, 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
|
||
original_content = content
|
||
modified = False
|
||
|
||
for pattern, replacement in REPLACEMENTS:
|
||
# Regex ile değiştir (subn kaç tane değiştiğini sayar)
|
||
new_content, count = re.subn(pattern, replacement, content)
|
||
if count > 0:
|
||
content = new_content
|
||
modified = True
|
||
print(f" -> [DÜZELTİLDİ] {filename}: {replacement} yapıldı ({count} adet)")
|
||
|
||
if modified:
|
||
with open(filepath, 'w', encoding='utf-8') as f:
|
||
f.write(content)
|
||
total_fixed += 1
|
||
|
||
except Exception as e:
|
||
print(f" [HATA] {filename} okunurken hata: {e}")
|
||
|
||
# 2. Tekil Dosya Düzeltmeleri
|
||
print("\nTekil Dosyalar Kontrol Ediliyor...")
|
||
for rel_path, pattern, replacement in SINGLE_FILE_FIXES:
|
||
filepath = os.path.join(root_dir, rel_path)
|
||
if os.path.exists(filepath):
|
||
try:
|
||
with open(filepath, 'r', encoding='utf-8') as f:
|
||
content = f.read()
|
||
|
||
new_content, count = re.subn(pattern, replacement, content)
|
||
if count > 0:
|
||
with open(filepath, 'w', encoding='utf-8') as f:
|
||
f.write(new_content)
|
||
print(f" -> [DÜZELTİLDİ] {rel_path} ({count} adet)")
|
||
total_fixed += 1
|
||
elif replacement in content:
|
||
print(f" -> [ATLANDI] {rel_path} (Zaten düzgün)")
|
||
except Exception as e:
|
||
print(f" [HATA] {rel_path}: {e}")
|
||
else:
|
||
print(f" [UYARI] Dosya yok: {rel_path}")
|
||
|
||
print(f"\n--- İşlem Tamamlandı. Toplam {total_fixed} dosya güncellendi. ---")
|
||
|
||
if __name__ == "__main__":
|
||
apply_fixes()
|