borgend/__main__.py

changeset 135
45c1a38f8709
parent 134
a7aa8ca7b3d0
child 142
ad1d4a29ec75
--- a/borgend/__main__.py	Sun Dec 05 13:09:12 2021 +0200
+++ b/borgend/__main__.py	Sun Dec 05 13:34:02 2021 +0200
@@ -44,86 +44,86 @@
     action='store_true',
     help='Set logging level to debug')
 
-args=parser.parse_args()
-
-#
-# Done parsing args, import our own modules, and launch everything
-#
+def main():
+    args=parser.parse_args()
 
-import borgend.config as config
-import borgend.dreamtime as dreamtime
-import borgend.loggers as loggers
-from borgend.scheduler import Scheduler
-from borgend.repository import Repository
-from borgend.backup import Backup
+    # Done parsing args, import our own modules, and launch everything
+    import borgend.config as config
+    import borgend.dreamtime as dreamtime
+    import borgend.loggers as loggers
+    from borgend.scheduler import Scheduler
+    from borgend.repository import Repository
+    from borgend.backup import Backup
 
-logger=loggers.mainlogger
+    logger=loggers.mainlogger
 
-if args.debug:
-    logger.setLevel(logging.DEBUG)
+    if args.debug:
+        logger.setLevel(logging.DEBUG)
+
+    tray = None
+    repos=[]
+    backups=[]
 
-tray = None
-repos=[]
-backups=[]
+    try:
+        dreamtime.start_monitoring()
 
-try:
-    dreamtime.start_monitoring()
+        scheduler = Scheduler()
+        scheduler.start()
 
-    scheduler = Scheduler()
-    scheduler.start()
-
-    repoconfigs=config.settings['repositories']
+        repoconfigs=config.settings['repositories']
 
-    logger.info('Initialising repositories')
-    for i in range(len(repoconfigs)):
-        r=Repository(i, repoconfigs[i])
-        repos.append(r)
+        logger.info('Initialising repositories')
+        for i in range(len(repoconfigs)):
+            r=Repository(i, repoconfigs[i])
+            repos.append(r)
 
-    backupconfigs=config.settings['backups']
+        backupconfigs=config.settings['backups']
 
-    logger.info('Initialising backups')
-    for i in range(len(backupconfigs)):
-        b=Backup(i, backupconfigs[i], scheduler)
-        backups.append(b)
+        logger.info('Initialising backups')
+        for i in range(len(backupconfigs)):
+            b=Backup(i, backupconfigs[i], scheduler)
+            backups.append(b)
 
-    if args.notray or platform.system()!='Darwin':
-        # Wait for scheduler to finish
-        run=scheduler.join
-    else:
-        # This is needed for Ctrl+C to work.
-        # TODO: proper exit handler, which seems to require
-        # ditching/forking/extending rumps to extend the NSApp class
-        from PyObjCTools.AppHelper import installMachInterrupt
-        installMachInterrupt()
-        # Start UI, and let it handle exit control
-        from borgend.ui import BorgendTray
-        tray=BorgendTray(backups);
-        run=tray.run
+        if args.notray or platform.system()!='Darwin':
+            # Wait for scheduler to finish
+            run=scheduler.join
+        else:
+            # This is needed for Ctrl+C to work.
+            # TODO: proper exit handler, which seems to require
+            # ditching/forking/extending rumps to extend the NSApp class
+            from PyObjCTools.AppHelper import installMachInterrupt
+            installMachInterrupt()
+            # Start UI, and let it handle exit control
+            from borgend.ui import BorgendTray
+            tray=BorgendTray(backups);
+            run=tray.run
 
-    for r in repos:
-        r.start()
+        for r in repos:
+            r.start()
 
-    for b in backups:
-        b.start()
+        for b in backups:
+            b.start()
+
+        run()
 
-    run()
+    except Exception as err:
+        # TODO: Should write errors here to stderr;
+        # perhaps add an extra stderr logger for error level messages
+        logger.exception("Exception fell through: exiting")
 
-except Exception as err:
-    # TODO: Should write errors here to stderr;
-    # perhaps add an extra stderr logger for error level messages
-    logger.exception("Exception fell through: exiting")
+    finally:
+        logger.debug("Exiting")
 
-finally:
-    logger.debug("Exiting")
+        for b in backups:
+            b.terminate()
 
-    for b in backups:
-        b.terminate()
-
-    for r in repos:
-        r.terminate()
+        for r in repos:
+            r.terminate()
 
-    if tray:
-        tray.quit()
-    else:
-        logging.shutdown()
+        if tray:
+            tray.quit()
+        else:
+            logging.shutdown()
 
+if __name__ == "__main__":
+    sys.exit(main())

mercurial