diff --git a/borg/archiver.py b/borg/archiver.py index f9ad44f6f..12de588ea 100644 --- a/borg/archiver.py +++ b/borg/archiver.py @@ -764,6 +764,19 @@ def build_parser(self, args=None, prog=None): See the output of the "borg help patterns" command for more help on exclude patterns. """) + class ToggleAction(argparse.Action): + """argparse action to handle "toggle" flags easily + + toggle flags are in the form of ``--foo``, ``--no-foo``. + + the ``--no-foo`` argument still needs to be passed to the + ``add_argument()`` call, but it simplifies the ``--no`` + detection. + """ + def __call__(self, parser, ns, values, option): + """set the given flag to true unless ``--no`` is passed""" + setattr(ns, self.dest, option.startswith('--no-')) + subparser = subparsers.add_parser('create', parents=[common_parser], description=self.do_create.__doc__, epilog=create_epilog, @@ -772,8 +785,9 @@ def build_parser(self, args=None, prog=None): subparser.add_argument('-s', '--stats', dest='stats', action='store_true', default=False, help='print statistics for the created archive') - subparser.add_argument('-p', '--progress', dest='progress', const=not sys.stderr.isatty(), - action='store_const', default=sys.stdin.isatty(), + subparser.add_argument('-p', '--progress', '--no-progress', + dest='progress', default=sys.stdin.isatty(), + action=ToggleAction, nargs=0, help="""toggle progress display while creating the archive, showing Original, Compressed and Deduplicated sizes, followed by the Number of files seen and the path being processed, default: %(default)s""")