Add commandline options for configuration files.
[matthijs/projects/backupninja.git] / src / backupninja
index b3c26f4343f5e80daf437e41ff0157329dfe5e69..a77242d55a14df5b610324da43bce7dab3df59db 100755 (executable)
 """ Check for scheduled backupninja actions and run them when needed """
 
 import optparse
 """ Check for scheduled backupninja actions and run them when needed """
 
 import optparse
+import logging
 import sys
 
 import sys
 
+from backupninja.log import setup_logging
+from backupninja import config
+from backupninja import action
+
+log = logging.getLogger()
+
 def make_option_parser():
     description = """%prog checks for scheduled actions and runs them when needed."""
     parser = optparse.OptionParser(description=description)
 def make_option_parser():
     description = """%prog checks for scheduled actions and runs them when needed."""
     parser = optparse.OptionParser(description=description)
-
+    parser.add_option( "-c", "--confdir"
+                     , help="Load configuration from CONFIG_DIR "
+                            "instead of '%default'. When "
+                            "the --conffile or --actionsdir options "
+                            "specify relative paths, they are taken "
+                            "relative to this directory."
+                     , default="/etc/backupninja"
+                     , dest="config_dir"
+                     , metavar="CONFIG_DIR")
+    parser.add_option( "-f", "--conffile"
+                     , help="Load the main configuration from FILE instead "
+                            "of '%default'. If FILE is a relative path, it "
+                            "is interpreted relative to CONFIG_DIR."
+                     , default='backupninja.conf'
+                     , dest="global_config"
+                     , metavar="FILE")
+    parser.add_option( "-a", "--actionsdir"
+                     , help="Load action configurations from ACTIONS_DIR "
+                            "instead of '%default'. If ACTIONS_DIR is a "
+                            "relative path, it is interpreted relative to "
+                            "CONFIG_DIR."
+                     , default="actions"
+                     , dest="actions_dir"
+                     , metavar="ACTIONS_DIR")
     return parser
  
 def main(argv):
     return parser
  
 def main(argv):
@@ -37,9 +67,19 @@ def main(argv):
     parser = make_option_parser()
     (options, args) = parser.parse_args(argv)
 
     parser = make_option_parser()
     (options, args) = parser.parse_args(argv)
 
+    # Setup logging
+    setup_logging(options)
+
     # Load config file
     # Load config file
+    global_conf = config.get_global_config(options)
+    if global_conf is None:
+        # Error was already logged
+        return 1
+
     # Process command
     # Process command
-    parser.print_help()
+    action.run_all_actions(options, global_conf)
+
+    return 0
 
 if __name__ == '__main__':
     sys.exit(main(sys.argv))
 
 if __name__ == '__main__':
     sys.exit(main(sys.argv))