@@ -69,20 +69,14 @@ def _validate_arguments(self, args: Namespace) -> bool:
6969
7070 """
7171 # Operations that don't require app_name
72- if (
73- args .migrate
74- or (args .list_backups and not args .app_name )
75- or (args .cleanup and not args .app_name )
76- ):
72+ if args .migrate or (args .cleanup and not args .app_name ):
7773 return True
7874
7975 # All other operations require app_name
8076 if not args .app_name :
8177 logger .error ("❌ App name is required for this operation" )
8278 logger .info ("💡 Usage: backup <app_name> [options]" )
83- logger .info (
84- "💡 For global operations, use: backup --list-backups, backup --cleanup, or backup --migrate"
85- )
79+ logger .info ("💡 For global operations, use: backup --cleanup or backup --migrate" )
8680 return False
8781
8882 # Validate app_name format (basic sanitization)
@@ -220,17 +214,14 @@ async def _handle_create_backup(self, app_name: str) -> None:
220214 except Exception as e :
221215 logger .error (f"❌ Failed to create backup for { app_name } : { e } " )
222216
223- async def _handle_list_backups (self , app_name : str | None = None ) -> None :
224- """Handle list backups operation.
217+ async def _handle_list_backups (self , app_name : str ) -> None :
218+ """Handle list backups operation for a specific app .
225219
226220 Args:
227- app_name: Name of specific app or None to list all apps with backups
221+ app_name: Name of the application
228222
229223 """
230- if app_name :
231- await self ._list_backups_for_app (app_name )
232- else :
233- await self ._list_all_apps_with_backups ()
224+ await self ._list_backups_for_app (app_name )
234225
235226 async def _list_backups_for_app (self , app_name : str ) -> None :
236227 """List backups for a specific app.
@@ -245,11 +236,11 @@ async def _list_backups_for_app(self, app_name: str) -> None:
245236 backups = self .backup_service .get_backup_info (app_name )
246237
247238 if not backups :
248- logger . info (f"No backups found for { app_name } " )
239+ print (f"No backups found for { app_name } " )
249240 return
250241
251- logger . info (f"\n 📦 Available backups for { app_name } :" )
252- logger . info ("=" * 60 )
242+ print (f"\n 📋 Available backups for { app_name } :" )
243+ print ("=" * 60 )
253244
254245 for backup in backups :
255246 version = backup ["version" ]
@@ -261,47 +252,17 @@ async def _list_backups_for_app(self, app_name: str) -> None:
261252 )
262253 exists_symbol = "✅" if backup ["exists" ] else "❌"
263254
264- logger . info (f" { exists_symbol } v{ version } " )
265- logger . info (f" 📁 File: { backup ['filename' ]} " )
266- logger . info (f" 📏 Size: { size_mb :.1f} MB" )
267- logger . info (f" 📅 Created: { created } " )
255+ print (f" { exists_symbol } v{ version } " )
256+ print (f" 📁 File: { backup ['filename' ]} " )
257+ print (f" 📏 Size: { size_mb :.1f} MB" )
258+ print (f" 📅 Created: { created } " )
268259 if backup .get ("sha256" ):
269- logger . info (f" 🔐 SHA256: { backup ['sha256' ][:16 ]} ..." )
270- logger . info ("" )
260+ print (f" 🔐 SHA256: { backup ['sha256' ][:16 ]} ..." )
261+ print ("" )
271262
272263 except Exception as e :
273264 logger .error (f"❌ Failed to list backups for { app_name } : { e } " )
274265
275- async def _list_all_apps_with_backups (self ) -> None :
276- """List all apps that have backups."""
277- logger .info ("📋 Listing all apps with backups..." )
278-
279- try :
280- apps_with_backups = self .backup_service .list_apps_with_backups ()
281-
282- if not apps_with_backups :
283- logger .info ("No apps with backups found" )
284- logger .info ("💡 Create backups using 'backup <app_name>'" )
285- return
286-
287- logger .info (f"\n 📦 Apps with backups ({ len (apps_with_backups )} ):" )
288- logger .info ("=" * 60 )
289-
290- for app_name in apps_with_backups :
291- backups = self .backup_service .get_backup_info (app_name )
292- backup_count = len (backups )
293- latest_version = backups [0 ]["version" ] if backups else "Unknown"
294-
295- logger .info (f" 📱 { app_name } " )
296- logger .info (f" 📊 Backups: { backup_count } " )
297- logger .info (f" 🔄 Latest: v{ latest_version } " )
298- logger .info ("" )
299-
300- logger .info ("💡 Use 'backup <app_name> --list-backups' for detailed info" )
301-
302- except Exception as e :
303- logger .error (f"❌ Failed to list apps with backups: { e } " )
304-
305266 async def _handle_cleanup (self , app_name : str | None = None ) -> None :
306267 """Handle cleanup old backups operation.
307268
@@ -310,20 +271,18 @@ async def _handle_cleanup(self, app_name: str | None = None) -> None:
310271
311272 """
312273 if app_name :
313- logger . info (f"🧹 Cleaning up old backups for { app_name } ..." )
274+ print (f"🧹 Cleaning up old backups for { app_name } ..." )
314275 else :
315- logger . info ("🧹 Cleaning up old backups for all apps..." )
276+ print ("🧹 Cleaning up old backups for all apps..." )
316277
317278 try :
318279 self .backup_service .cleanup_old_backups (app_name )
319280
320281 max_backups = self .global_config ["max_backup" ]
321282 if max_backups == 0 :
322- logger . info ("✅ All backups removed (max_backup=0)" )
283+ print ("✅ All backups removed (max_backup=0)" )
323284 else :
324- logger .info (
325- f"✅ Cleanup completed (keeping { max_backups } most recent backups)"
326- )
285+ print (f"✅ Cleanup completed (keeping { max_backups } most recent backups)" )
327286
328287 except Exception as e :
329288 logger .error (f"❌ Failed to cleanup backups: { e } " )
@@ -335,17 +294,17 @@ async def _handle_info(self, app_name: str) -> None:
335294 app_name: Name of the application
336295
337296 """
338- logger . info (f"ℹ️ Backup information for { app_name } ..." )
297+ print (f"ℹ️ Backup information for { app_name } ..." )
339298
340299 try :
341300 backups = self .backup_service .get_backup_info (app_name )
342301
343302 if not backups :
344- logger . info (f"No backup information available for { app_name } " )
303+ print (f"No backup information available for { app_name } " )
345304 return
346305
347- logger . info (f"\n 📊 Backup Statistics for { app_name } :" )
348- logger . info ("=" * 60 )
306+ print (f"\n 📊 Backup Statistics for { app_name } :" )
307+ print ("=" * 60 )
349308
350309 total_backups = len (backups )
351310 total_size = sum (b ["size" ] for b in backups if b ["size" ])
@@ -354,53 +313,47 @@ async def _handle_info(self, app_name: str) -> None:
354313 oldest_backup = backups [- 1 ] if backups else None
355314 newest_backup = backups [0 ] if backups else None
356315
357- logger . info (f" 📦 Total backups: { total_backups } " )
358- logger . info (f" 📏 Total size: { total_size_mb :.1f} MB" )
316+ print (f" 📦 Total backups: { total_backups } " )
317+ print (f" 📏 Total size: { total_size_mb :.1f} MB" )
359318
360319 if newest_backup :
361320 latest_created = (
362321 newest_backup ["created" ].strftime ("%Y-%m-%d %H:%M:%S" )
363322 if newest_backup ["created" ]
364323 else "Unknown"
365324 )
366- logger .info (
367- f" 🆕 Latest version: v{ newest_backup ['version' ]} ({ latest_created } )"
368- )
325+ print (f" 🆕 Latest version: v{ newest_backup ['version' ]} ({ latest_created } )" )
369326
370327 if oldest_backup :
371328 oldest_created = (
372329 oldest_backup ["created" ].strftime ("%Y-%m-%d %H:%M:%S" )
373330 if oldest_backup ["created" ]
374331 else "Unknown"
375332 )
376- logger .info (
377- f" 📜 Oldest version: v{ oldest_backup ['version' ]} ({ oldest_created } )"
378- )
333+ print (f" 📜 Oldest version: v{ oldest_backup ['version' ]} ({ oldest_created } )" )
379334
380335 # Backup configuration
381336 max_backups = self .global_config ["max_backup" ]
382337 backup_dir = self .global_config ["directory" ]["backup" ]
383338
384- logger .info ("\n ⚙️ Configuration:" )
385- logger .info (f" 📁 Backup directory: { backup_dir } " )
386- logger .info (
387- f" 🔄 Max backups kept: { max_backups if max_backups > 0 else 'unlimited' } "
388- )
339+ print ("\n ⚙️ Configuration:" )
340+ print (f" 📁 Backup directory: { backup_dir } " )
341+ print (f" 🔄 Max backups kept: { max_backups if max_backups > 0 else 'unlimited' } " )
389342
390343 except Exception as e :
391344 logger .error (f"❌ Failed to get backup info for { app_name } : { e } " )
392345
393346 async def _handle_migrate (self ) -> None :
394347 """Handle migration of old backup format."""
395- logger . info ("🔄 Migrating old backup files to new format..." )
348+ print ("🔄 Migrating old backup files to new format..." )
396349
397350 try :
398351 migrated_count = self .backup_service .migrate_old_backups ()
399352
400353 if migrated_count > 0 :
401- logger . info (f"✅ Successfully migrated { migrated_count } backup files" )
354+ print (f"✅ Successfully migrated { migrated_count } backup files" )
402355 else :
403- logger . info ("ℹ️ No old backup files found to migrate" )
356+ print ("ℹ️ No old backup files found to migrate" )
404357
405358 except Exception as e :
406359 logger .error (f"❌ Failed to migrate old backups: { e } " )
0 commit comments