diff options
| author | Max Resnick <max@ofmax.li> | 2020-09-22 22:23:57 -0700 |
|---|---|---|
| committer | Max Resnick <max@ofmax.li> | 2020-09-22 22:23:57 -0700 |
| commit | 7b597be4b9576f6d045169c91ef30a94d6abfdef (patch) | |
| tree | 0bf9f2b24e0ddc49ccbb49b4331f6b616343aaa9 | |
| parent | 38a152ad7eea6e07d02007d719db26528272e328 (diff) | |
| download | git-snapshot-7b597be4b9576f6d045169c91ef30a94d6abfdef.tar.gz | |
exit properly, track errorsv0.0.2
| -rw-r--r-- | gitsnap/snap.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/gitsnap/snap.py b/gitsnap/snap.py index 6fd2820..0089ec7 100644 --- a/gitsnap/snap.py +++ b/gitsnap/snap.py @@ -25,7 +25,7 @@ parser_backup.add_argument('-p', '--prefix', type=str, default='gitsnap', args = parser.parse_args() Context = collections.namedtuple('Context', - 'repo bucket prefix bundle repo_name wal') + 'repo bucket prefix bundle repo_name wal successes errors') class Wal(object): @@ -38,6 +38,8 @@ class Wal(object): def __init__(self): self.fd = open(self.WAL_FILE, 'a') self.wal = csv.writer(self.fd, quotechar='|', quoting=csv.QUOTE_ALL) + self.errors = 0 + self.successes = 0 def __enter__(self): return self @@ -60,13 +62,15 @@ def logit(log_message): def logitargs(func): @wraps(func) def with_logging(ctx, *args, **kwargs): - ctx.wal.write([log_message, f'started {ctx.repo_name}']) + ctx.wal.write([log_message, 'started', ctx.repo_name]) output = None try: output = func(ctx, *args, **kwargs) except Exception as e: - ctx.wal.write([log_message, f'failed {e}']) - ctx.wal.write([log_message, f' completed {ctx.repo_name}']) + ctx.wal.write([log_message, 'failed', e]) + ctx.errors += 1 + return output + ctx.wal.write([log_message, 'completed', ctx.repo_name]) return output return with_logging return logitargs @@ -123,9 +127,13 @@ def run_backups(base, bucket, prefix): bucket=bucket, prefix=prefix, bundle=None, + successes=0, + errors=0, wal=wal ) run_backup(ctx) + if ctx.errors != 0: + sys.exit(1) def run(): if args.cmd == 'backup': |