def backup_file(self, filepath): # Create relative path to maintain folder structure rel_path = os.path.relpath(filepath, WATCH_DIR) backup_path = os.path.join(BACKUP_DIR, rel_path + f".self.timestamp().bak") os.makedirs(os.path.dirname(backup_path), exist_ok=True)
os.makedirs(BACKUP_DIR, exist_ok=True)
class WindevHandler(FileSystemEventHandler): def on_modified(self, event): if not event.is_directory: self.backup_file(event.src_path) windev
# Copy file with metadata shutil.copy2(filepath, backup_path)
print(f"[Windev] Backed up: filepath → backup_path") def backup_file(self, filepath): # Create relative path to
def log_change(self, original, backup): log = [] if os.path.exists(LOG_FILE): with open(LOG_FILE, 'r') as f: log = json.load(f)
# Optional Git auto-commit if GIT_AUTO_COMMIT: self.git_commit(filepath) WATCH_DIR) backup_path = os.path.join(BACKUP_DIR
with open(LOG_FILE, 'w') as f: json.dump(log, f, indent=2)