X-Git-Url: https://git.stderr.nl/gitweb?p=matthijs%2Fprojects%2Fbackupninja.git;a=blobdiff_plain;f=src%2Fbackupninja;h=1c2d71c26cdce22620c60ed7c3494cec0d14c7bc;hp=b3c26f4343f5e80daf437e41ff0157329dfe5e69;hb=5da4fb89ab2bdad92435be2b4ba38061b2834a36;hpb=19f41bc97f27ef58198b6fbbb00354f9cdb0db40 diff --git a/src/backupninja b/src/backupninja index b3c26f4..1c2d71c 100755 --- a/src/backupninja +++ b/src/backupninja @@ -23,12 +23,47 @@ """ Check for scheduled backupninja actions and run them when needed """ import optparse +import logging 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) - + 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") + parser.add_option( "-d", "--debug" + , help="Run in debug mode. This only means logging is " + "more verbose." + , action="store_true" + , dest="debug") return parser def main(argv): @@ -37,9 +72,19 @@ def main(argv): parser = make_option_parser() (options, args) = parser.parse_args(argv) + # Setup logging + setup_logging(options) + # Load config file + global_conf = config.get_global_config(options) + if global_conf is None: + # Error was already logged + return 1 + # Process command - parser.print_help() + action.run_all_actions(options, global_conf) + + return 0 if __name__ == '__main__': sys.exit(main(sys.argv))