@@ -50,12 +50,12 @@ def load(self) -> dict[str, Any]:
5050 with open (self .metadata_file , encoding = "utf-8" ) as f :
5151 return json .load (f )
5252 except (json .JSONDecodeError , OSError ) as e :
53- logger .warning (f "Corrupted metadata file { self .metadata_file } : { e } " )
53+ logger .warning ("Corrupted metadata file %s: %s" , self .metadata_file , e )
5454 # Create backup of corrupted file
5555 corrupted_backup = self .metadata_file .with_suffix (".json.corrupted" )
5656 if self .metadata_file .exists ():
5757 shutil .copy2 (self .metadata_file , corrupted_backup )
58- logger .info (f "Backed up corrupted metadata to { corrupted_backup } " )
58+ logger .info ("Backed up corrupted metadata to %s" , corrupted_backup )
5959 return {"versions" : {}}
6060
6161 def save (self , metadata : dict [str , Any ]) -> None :
@@ -83,7 +83,7 @@ def save(self, metadata: dict[str, Any]) -> None:
8383
8484 # Atomic move
8585 temp_path .replace (self .metadata_file )
86- logger .debug (f "Saved metadata to { self .metadata_file } " )
86+ logger .debug ("Saved metadata to %s" , self .metadata_file )
8787
8888 def add_version (self , version : str , filename : str , file_path : Path ) -> None :
8989 """Add a version entry to metadata with checksum.
@@ -108,7 +108,7 @@ def add_version(self, version: str, filename: str, file_path: Path) -> None:
108108 }
109109
110110 self .save (metadata )
111- logger .debug (f "Added version { version } to metadata" )
111+ logger .debug ("Added version %s to metadata" , version )
112112
113113 def get_latest_version (self ) -> str | None :
114114 """Get the latest version from metadata.
@@ -178,7 +178,7 @@ def remove_version(self, version: str) -> bool:
178178 if version in metadata ["versions" ]:
179179 del metadata ["versions" ][version ]
180180 self .save (metadata )
181- logger .debug (f "Removed version { version } from metadata" )
181+ logger .debug ("Removed version %s from metadata" , version )
182182 return True
183183 return False
184184
@@ -199,15 +199,18 @@ def verify_backup_integrity(self, version: str, file_path: Path) -> bool:
199199
200200 stored_hash = version_info .get ("sha256" )
201201 if not stored_hash :
202- logger .warning (f "No checksum stored for version { version } " )
202+ logger .warning ("No checksum stored for version %s" , version )
203203 return False
204204
205205 actual_hash = self ._calculate_sha256 (file_path )
206206 is_valid = actual_hash == stored_hash
207207
208208 if not is_valid :
209209 logger .error (
210- f"Integrity check failed for { file_path } : expected { stored_hash } , got { actual_hash } "
210+ "Integrity check failed for %s: expected %s, got %s" ,
211+ file_path ,
212+ stored_hash ,
213+ actual_hash ,
211214 )
212215
213216 return is_valid
@@ -300,7 +303,7 @@ def create_backup(
300303 metadata = BackupMetadata (app_backup_dir )
301304 metadata .add_version (version , backup_filename , backup_path )
302305
303- logger .info (f "💾 Backup created: { backup_path } (v{ version } )" )
306+ logger .info ("💾 Backup created: %s (v%s)" , backup_path , version )
304307
305308 # Cleanup old backups after successful backup
306309 self ._cleanup_old_backups_for_app (app_name , app_backup_dir )
@@ -311,7 +314,7 @@ def create_backup(
311314 # Cleanup temp file on error
312315 if temp_path .exists ():
313316 temp_path .unlink ()
314- logger .error (f "Failed to create backup for { app_name } : { e } " )
317+ logger .error ("Failed to create backup for %s: %s" , app_name , e )
315318 raise
316319
317320 def restore_latest_backup (self , app_name : str , destination_dir : Path ) -> Path | None :
@@ -338,15 +341,15 @@ def restore_latest_backup(self, app_name: str, destination_dir: Path) -> Path |
338341 app_backup_dir = backup_base_dir / app_name
339342
340343 if not app_backup_dir .exists ():
341- logger .warning (f "No backup directory found for { app_name } " )
344+ logger .warning ("No backup directory found for %s" , app_name )
342345 return None
343346
344347 # Get latest version from metadata
345348 metadata = BackupMetadata (app_backup_dir )
346349 latest_version = metadata .get_latest_version ()
347350
348351 if not latest_version :
349- logger .warning (f "No backup versions found for { app_name } " )
352+ logger .warning ("No backup versions found for %s" , app_name )
350353 return None
351354
352355 return self ._restore_specific_version (app_name , latest_version , destination_dir )
@@ -388,39 +391,39 @@ def _restore_specific_version(
388391 app_backup_dir = backup_base_dir / app_name
389392
390393 if not app_backup_dir .exists ():
391- logger .error (f "No backup directory found for { app_name } " )
394+ logger .error ("No backup directory found for %s" , app_name )
392395 return None
393396
394397 # Get version info from metadata
395398 metadata = BackupMetadata (app_backup_dir )
396399 version_info = metadata .get_version_info (version )
397400
398401 if not version_info :
399- logger .error (f "Version { version } not found for { app_name } " )
402+ logger .error ("Version %s not found for %s" , version , app_name )
400403 return None
401404
402405 backup_filename = version_info ["filename" ]
403406 backup_path = app_backup_dir / backup_filename
404407
405408 if not backup_path .exists ():
406- logger .error (f "Backup file not found: { backup_path } " )
409+ logger .error ("Backup file not found: %s" , backup_path )
407410 return None
408411
409412 # Verify backup integrity
410413 if not metadata .verify_backup_integrity (version , backup_path ):
411- logger .error (f "Backup integrity check failed for { app_name } v { version } " )
414+ logger .error ("Backup integrity check failed for %s v%s" , app_name , version )
412415 return None
413416
414417 # Get app config to determine proper filename and current version
415418 app_config = self .config_manager .load_app_config (app_name )
416419 if not app_config :
417- logger .error (f "App configuration not found for { app_name } " )
420+ logger .error ("App configuration not found for %s" , app_name )
418421 return None
419422
420423 # Validate app config structure
421424 if "appimage" not in app_config :
422425 logger .error (
423- f "Invalid app configuration for { app_name } : missing 'appimage' section"
426+ "Invalid app configuration for %s : missing 'appimage' section" , app_name
424427 )
425428 return None
426429
@@ -437,20 +440,20 @@ def _restore_specific_version(
437440 # If current AppImage exists, backup it first with its current version
438441 current_version = appimage_config .get ("version" , "unknown" )
439442 if destination_path .exists () and current_version != version :
440- logger .info (f "Backing up current version { current_version } before restore..." )
443+ logger .info ("Backing up current version %s before restore..." , current_version )
441444 try :
442445 current_backup_path = self .create_backup (
443446 destination_path , app_name , current_version
444447 )
445448 if current_backup_path :
446- logger .info (f "Current version backed up to: { current_backup_path } " )
449+ logger .info ("Current version backed up to: %s" , current_backup_path )
447450 else :
448451 logger .warning (
449452 "Failed to backup current version, continuing with restore..."
450453 )
451454 except Exception as e :
452455 logger .warning (
453- f "Failed to backup current version: { e } , continuing with restore..."
456+ "Failed to backup current version: %s , continuing with restore..." , e
454457 )
455458
456459 # Restore file atomically
@@ -481,20 +484,20 @@ def _restore_specific_version(
481484 # Save updated config
482485 try :
483486 self .config_manager .save_app_config (app_name , app_config )
484- logger .debug (f "Updated app config for { app_name } with version { version } " )
487+ logger .debug ("Updated app config for %s with version %s" , app_name , version )
485488 except Exception as e :
486- logger .error (f "Failed to update app config for { app_name } : { e } " )
489+ logger .error ("Failed to update app config for %s: %s" , app_name , e )
487490 # Continue anyway, as the file restore was successful
488491
489- logger .info (f "🔄 Restored { app_name } v { version } to { destination_path } " )
492+ logger .info ("🔄 Restored %s v%s to %s" , app_name , version , destination_path )
490493 logger .info ("📝 Updated app configuration with restored version" )
491494 return destination_path
492495
493496 except Exception as e :
494497 # Cleanup temp file on error
495498 if temp_path .exists ():
496499 temp_path .unlink ()
497- logger .error (f "Failed to restore { app_name } v { version } : { e } " )
500+ logger .error ("Failed to restore %s v%s: %s" , app_name , version , e )
498501 raise
499502
500503 def get_backup_info (self , app_name : str ) -> list [dict [str , Any ]]:
@@ -586,7 +589,7 @@ def _cleanup_old_backups_for_app(self, app_name: str, app_backup_dir: Path) -> N
586589 backup_path = app_backup_dir / version_info ["filename" ]
587590 if backup_path .exists ():
588591 backup_path .unlink ()
589- logger .info (f "Removed backup: { backup_path } " )
592+ logger .info ("Removed backup: %s" , backup_path )
590593 metadata .remove_version (version )
591594
592595 # Remove metadata file and directory if empty
@@ -610,9 +613,9 @@ def _cleanup_old_backups_for_app(self, app_name: str, app_backup_dir: Path) -> N
610613 try :
611614 backup_path .unlink ()
612615 metadata .remove_version (version )
613- logger .info (f "Removed old backup: { backup_path } (v{ version } )" )
616+ logger .info ("Removed old backup: %s (v%s)" , backup_path , version )
614617 except Exception as e :
615- logger .error (f "Failed to remove backup { backup_path } : { e } " )
618+ logger .error ("Failed to remove backup %s: %s" , backup_path , e )
616619
617620 def migrate_old_backups (self ) -> int :
618621 """Migrate old flat backup structure to new folder-based structure.
@@ -633,7 +636,7 @@ def migrate_old_backups(self) -> int:
633636 logger .debug ("No old backups found to migrate" )
634637 return 0
635638
636- logger .info (f "🔄 Migrating { len ( old_backups ) } old backups to new format..." )
639+ logger .info ("🔄 Migrating %d old backups to new format..." , len ( old_backups ) )
637640
638641 migrated_count = 0
639642
@@ -696,17 +699,17 @@ def migrate_old_backups(self) -> int:
696699 metadata .add_version (version , new_filename , new_path )
697700
698701 migrated_count += 1
699- logger .debug (f "Migrated { old_backup } -> { new_path } " )
702+ logger .debug ("Migrated %s -> %s" , old_backup , new_path )
700703 else :
701704 # File already exists, remove old backup
702705 old_backup .unlink ()
703- logger .debug (f "Removed duplicate old backup: { old_backup } " )
706+ logger .debug ("Removed duplicate old backup: %s" , old_backup )
704707
705708 except Exception as e :
706- logger .error (f "Failed to migrate { old_backup } : { e } " )
709+ logger .error ("Failed to migrate %s: %s" , old_backup , e )
707710
708711 if migrated_count > 0 :
709- logger .info (f "✅ Successfully migrated { migrated_count } backups to new format" )
712+ logger .info ("✅ Successfully migrated %d backups to new format" , migrated_count )
710713
711714 return migrated_count
712715
0 commit comments