2021-01-15 13:01:17 +01:00
|
|
|
import argparse
|
|
|
|
import sys
|
|
|
|
from specs import parse_specs_file
|
|
|
|
|
|
|
|
|
|
|
|
# This just displays the error type and message, not the stack trace
|
|
|
|
def except_hook(ext_type, value, traceback):
|
|
|
|
sys.stderr.write("{}: {}\n".format(ext_type.__name__, value))
|
|
|
|
|
2021-01-15 14:14:25 +01:00
|
|
|
|
2021-01-15 13:01:17 +01:00
|
|
|
sys.excepthook = except_hook
|
|
|
|
|
|
|
|
|
|
|
|
# Define parser
|
|
|
|
parser = argparse.ArgumentParser(
|
2021-01-15 14:14:25 +01:00
|
|
|
description="Backup directories and Docker volumes."
|
|
|
|
)
|
|
|
|
parser.add_argument(
|
|
|
|
"-f",
|
|
|
|
"--file",
|
|
|
|
action="append",
|
|
|
|
dest="file",
|
|
|
|
help="File containing spec definitions.",
|
|
|
|
)
|
|
|
|
parser.add_argument(
|
|
|
|
"-j",
|
|
|
|
"--json",
|
|
|
|
action="store_const",
|
|
|
|
const=True,
|
|
|
|
default=False,
|
|
|
|
help="Print out the parsed specs as JSON " "and exit",
|
|
|
|
)
|
|
|
|
parser.add_argument(
|
|
|
|
"spec", nargs="*", help="The specs to process. Defaults to all."
|
|
|
|
)
|
2021-01-15 13:01:17 +01:00
|
|
|
|
|
|
|
# Parse arguments
|
|
|
|
args = parser.parse_args()
|
|
|
|
specs = sum([parse_specs_file(path) for path in args.file], [])
|
|
|
|
|
|
|
|
# Filter specs if needed
|
|
|
|
if args.spec:
|
|
|
|
specs = filter(lambda s: s.name in args.spec, specs)
|
|
|
|
|
|
|
|
# Dump parsed data as json
|
|
|
|
if args.json:
|
|
|
|
import json
|
2021-01-15 14:14:25 +01:00
|
|
|
|
2021-01-15 13:01:17 +01:00
|
|
|
print(json.dumps([spec.to_dict() for spec in specs], indent=4))
|
|
|
|
|
|
|
|
else:
|
|
|
|
pass
|
|
|
|
# Run the backups
|
|
|
|
# for spec in specs:
|
|
|
|
# spec.backup()
|