75 lines
2.1 KiB
Python
75 lines
2.1 KiB
Python
import os
|
|
import shutil
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
|
|
EXCLUDE_PREFIXES = (
|
|
'COBY' + os.sep, # Do not touch COBY subsystem
|
|
)
|
|
EXCLUDE_FILES = {
|
|
'NN' + os.sep + 'training' + os.sep + 'enhanced_realtime_training.py',
|
|
}
|
|
|
|
delete_list_path = ROOT / 'DELETE_CANDIDATES.txt'
|
|
|
|
deleted_files: list[str] = []
|
|
kept_files: list[str] = []
|
|
|
|
if delete_list_path.exists():
|
|
for line in delete_list_path.read_text(encoding='utf-8').splitlines():
|
|
rel = line.strip()
|
|
if not rel:
|
|
continue
|
|
# Skip excluded prefixes
|
|
if any(rel.startswith(p) for p in EXCLUDE_PREFIXES):
|
|
kept_files.append(rel)
|
|
continue
|
|
# Skip explicitly excluded files
|
|
if rel in EXCLUDE_FILES:
|
|
kept_files.append(rel)
|
|
continue
|
|
fp = ROOT / rel
|
|
if fp.exists() and fp.is_file():
|
|
try:
|
|
fp.unlink()
|
|
deleted_files.append(rel)
|
|
except Exception:
|
|
kept_files.append(rel)
|
|
|
|
# Remove tests directories outside COBY
|
|
removed_dirs: list[str] = []
|
|
for d in ROOT.rglob('tests'):
|
|
try:
|
|
rel = str(d.relative_to(ROOT))
|
|
except Exception:
|
|
continue
|
|
if any(rel.startswith(p) for p in EXCLUDE_PREFIXES):
|
|
continue
|
|
if d.is_dir():
|
|
try:
|
|
shutil.rmtree(d)
|
|
removed_dirs.append(rel)
|
|
except Exception:
|
|
pass
|
|
|
|
# Write cleanup log / todo
|
|
log_lines = []
|
|
log_lines.append('Cleanup run summary:')
|
|
log_lines.append(f'- Deleted files: {len(deleted_files)}')
|
|
for x in deleted_files[:50]:
|
|
log_lines.append(f' - {x}')
|
|
if len(deleted_files) > 50:
|
|
log_lines.append(f' ... and {len(deleted_files)-50} more')
|
|
log_lines.append(f'- Removed test directories: {len(removed_dirs)}')
|
|
for x in removed_dirs[:50]:
|
|
log_lines.append(f' - {x}')
|
|
log_lines.append(f'- Kept (excluded): {len(kept_files)}')
|
|
|
|
(ROOT / 'CLEANUP_TODO.md').write_text('\n'.join(log_lines), encoding='utf-8')
|
|
|
|
print(f'Deleted files: {len(deleted_files)}')
|
|
print(f'Removed test dirs: {len(removed_dirs)}')
|
|
print(f'Kept (excluded): {len(kept_files)}')
|
|
|