Spaces:
Configuration error
Configuration error
| """file_editor.py — Applica modifiche a file con backup automatico.""" | |
| import shutil | |
| from pathlib import Path | |
| from datetime import datetime | |
| BACKUP_DIR=Path(".agent_backups") | |
| def _backup(filepath:str)->str: | |
| BACKUP_DIR.mkdir(exist_ok=True); src=Path(filepath) | |
| if not src.exists(): return "" | |
| ts=datetime.now().strftime("%Y%m%d_%H%M%S"); bk=BACKUP_DIR/f"{src.stem}_{ts}{src.suffix}" | |
| shutil.copy2(src,bk); return str(bk) | |
| def apply_replace(filepath:str,old_code:str,new_code:str,backup:bool=True)->dict: | |
| try: | |
| p=Path(filepath) | |
| if not p.exists(): return {"success":False,"error":"File non trovato"} | |
| c=p.read_text(encoding="utf-8") | |
| if old_code not in c: return {"success":False,"error":"Blocco non trovato"} | |
| bk=_backup(filepath) if backup else "" | |
| p.write_text(c.replace(old_code,new_code,1),encoding="utf-8") | |
| return {"success":True,"backup":bk} | |
| except Exception as e: return {"success":False,"error":str(e)} | |
| def write_file(filepath:str,content:str,backup:bool=True)->dict: | |
| try: | |
| p=Path(filepath); bk=_backup(filepath) if backup and p.exists() else "" | |
| p.parent.mkdir(parents=True,exist_ok=True); p.write_text(content,encoding="utf-8") | |
| return {"success":True,"backup":bk,"path":filepath} | |
| except Exception as e: return {"success":False,"error":str(e)} | |
| def list_backups()->list[dict]: | |
| if not BACKUP_DIR.exists(): return [] | |
| return [{"path":str(b),"name":b.name,"size":b.stat().st_size} for b in sorted(BACKUP_DIR.iterdir(),reverse=True)[:20]] |