X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=cmd%2Ffsck-cmd.py;h=35b45f8b514a0c07a36d6455bbedc6c85877425c;hb=aeafe13a9330e7deca3dc6b9c0496937d904663a;hp=1c2505812d8c7a75981ff246519798d3439228ff;hpb=2ff672c48f3dbde761b30775adcdc76a621df527;p=bup.git diff --git a/cmd/fsck-cmd.py b/cmd/fsck-cmd.py index 1c25058..35b45f8 100755 --- a/cmd/fsck-cmd.py +++ b/cmd/fsck-cmd.py @@ -1,13 +1,21 @@ -#!/usr/bin/env python +#!/bin/sh +"""": # -*-python-*- +bup_python="$(dirname "$0")/bup-python" || exit $? +exec "$bup_python" "$0" ${1+"$@"} +""" +# end of bup preamble + +from __future__ import absolute_import, print_function import sys, os, glob, subprocess + from bup import options, git -from bup.helpers import * +from bup.helpers import Sha1, chunkyreader, istty2, log, progress par2_ok = 0 nullf = open('/dev/null') def debug(s): - if opt.verbose: + if opt.verbose > 1: log(s) def run(argv): @@ -36,7 +44,7 @@ def par2_setup(): def parv(lvl): if opt.verbose >= lvl: - if istty: + if istty2: return [] else: return ['-q'] @@ -71,15 +79,15 @@ def git_verify(base): if opt.quick: try: quick_verify(base) - except Exception, e: - debug('error: %s\n' % e) + except Exception as e: + log('error: %s\n' % e) return 1 return 0 else: return run(['git', 'verify-pack', '--', base]) -def do_pack(base, last): +def do_pack(base, last, par2_exists): code = 0 if par2_ok and par2_exists and (opt.repair or not opt.generate): vresult = par2_verify(base) @@ -87,34 +95,41 @@ def do_pack(base, last): if opt.repair: rresult = par2_repair(base) if rresult != 0: - print '%s par2 repair: failed (%d)' % (last, rresult) + action_result = 'failed' + log('%s par2 repair: failed (%d)\n' % (last, rresult)) code = rresult else: - print '%s par2 repair: succeeded (0)' % last + action_result = 'repaired' + log('%s par2 repair: succeeded (0)\n' % last) code = 100 else: - print '%s par2 verify: failed (%d)' % (last, vresult) + action_result = 'failed' + log('%s par2 verify: failed (%d)\n' % (last, vresult)) code = vresult else: - print '%s ok' % last + action_result = 'ok' elif not opt.generate or (par2_ok and not par2_exists): gresult = git_verify(base) if gresult != 0: - print '%s git verify: failed (%d)' % (last, gresult) + action_result = 'failed' + log('%s git verify: failed (%d)\n' % (last, gresult)) code = gresult else: if par2_ok and opt.generate: presult = par2_generate(base) if presult != 0: - print '%s par2 create: failed (%d)' % (last, presult) + action_result = 'failed' + log('%s par2 create: failed (%d)\n' % (last, presult)) code = presult else: - print '%s ok' % last + action_result = 'generated' else: - print '%s ok' % last + action_result = 'ok' else: assert(opt.generate and (not par2_ok or par2_exists)) - debug(' skipped: par2 file already generated.\n') + action_result = 'exists' if par2_exists else 'skipped' + if opt.verbose: + print(last, action_result) return code @@ -129,7 +144,7 @@ j,jobs= run 'n' jobs in parallel par2-ok immediately return 0 if par2 is ok, 1 if not disable-par2 ignore par2 even if it is available """ -o = options.Options('bup fsck', optspec) +o = options.Options(optspec) (opt, flags, extra) = o.parse(sys.argv[1:]) par2_setup() @@ -172,7 +187,7 @@ for name in extra: progress('fsck (%d/%d)\r' % (count, len(extra))) if not opt.jobs: - nc = do_pack(base, last) + nc = do_pack(base, last, par2_exists) code = code or nc count += 1 else: @@ -188,8 +203,8 @@ for name in extra: outstanding[pid] = 1 else: # child try: - sys.exit(do_pack(base, last)) - except Exception, e: + sys.exit(do_pack(base, last, par2_exists)) + except Exception as e: log('exception: %r\n' % e) sys.exit(99) @@ -203,6 +218,6 @@ while len(outstanding): if not opt.verbose: progress('fsck (%d/%d)\r' % (count, len(extra))) -if not opt.verbose and istty: - log('fsck done. \n') +if istty2: + debug('fsck done. \n') sys.exit(code)