| 
					
				 | 
			
			
				@@ -38,7 +38,6 @@ try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     from ..helpers import Error, set_ec 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     from ..helpers import location_validator, archivename_validator, ChunkerParams, Location 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     from ..helpers import NameSpec, CommentSpec, FilesCacheMode 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    from ..helpers import BaseFormatter, ArchiveFormatter 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     from ..helpers import format_timedelta, format_file_size 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     from ..helpers import remove_surrogates, bin_to_hex, eval_escapes 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     from ..helpers import timestamp 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -104,6 +103,7 @@ from .prune import PruneMixIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .rename import RenameMixIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .rcreate import RCreateMixIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .rdelete import RDeleteMixIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from .rlist import RListMixIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .serve import ServeMixIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .tar import TarMixIn 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from .transfer import TransferMixIn 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -127,6 +127,7 @@ class Archiver( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     RenameMixIn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     RCreateMixIn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     RDeleteMixIn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    RListMixIn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ServeMixIn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     TransferMixIn, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ): 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -701,30 +702,6 @@ class Archiver( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             pi.finish() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return self.exit_code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    @with_repository(compatibility=(Manifest.Operation.READ,)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def do_rlist(self, args, repository, manifest, key): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """List the archives contained in a repository""" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if args.format is not None: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            format = args.format 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        elif args.short: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            format = "{archive}{NL}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            format = "{archive:<36} {time} [{id}]{NL}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        formatter = ArchiveFormatter(format, repository, manifest, key, json=args.json, iec=args.iec) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        output_data = [] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for archive_info in manifest.archives.list_considering(args): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if args.json: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                output_data.append(formatter.get_item_data(archive_info)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sys.stdout.write(formatter.format_item(archive_info)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if args.json: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            json_print(basic_json_data(manifest, extra={"archives": output_data})) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return self.exit_code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @with_repository(cache=True, compatibility=(Manifest.Operation.READ,)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def do_rinfo(self, args, repository, manifest, key, cache): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         """Show repository infos""" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1574,6 +1551,7 @@ class Archiver( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.build_parser_delete(subparsers, common_parser, mid_common_parser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.build_parser_help(subparsers, common_parser, mid_common_parser, parser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.build_parser_rdelete(subparsers, common_parser, mid_common_parser, parser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        self.build_parser_rlist(subparsers, common_parser, mid_common_parser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # borg extract 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         extract_epilog = process_epilog( 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1707,86 +1685,6 @@ class Archiver( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.build_parser_keys(subparsers, common_parser, mid_common_parser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         self.build_parser_rcreate(subparsers, common_parser, mid_common_parser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        # borg rlist 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        rlist_epilog = ( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            process_epilog( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        This command lists the archives contained in a repository. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        .. man NOTES 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        The FORMAT specifier syntax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        +++++++++++++++++++++++++++ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        The ``--format`` option uses python's `format string syntax 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        <https://docs.python.org/3.9/library/string.html#formatstrings>`_. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Examples: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        :: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $ borg rlist --format '{archive}{NL}' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ArchiveFoo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ArchiveBar 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # {VAR:NUMBER} - pad to NUMBER columns. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # Strings are left-aligned, numbers are right-aligned. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            # Note: time columns except ``isomtime``, ``isoctime`` and ``isoatime`` cannot be padded. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            $ borg rlist --format '{archive:36} {time} [{id}]{NL}' /path/to/repo 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ArchiveFoo                           Thu, 2021-12-09 10:22:28 [0b8e9a312bef3f2f6e2d0fc110c196827786c15eba0188738e81697a7fa3b274] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ... 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        The following keys are always available: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            + BaseFormatter.keys_help() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            + textwrap.dedent( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Keys available only when listing archives in a repository: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            + ArchiveFormatter.keys_help() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        subparser = subparsers.add_parser( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "rlist", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            parents=[common_parser], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            add_help=False, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            description=self.do_rlist.__doc__, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            epilog=rlist_epilog, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            formatter_class=argparse.RawDescriptionHelpFormatter, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            help="list repository contents", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        subparser.set_defaults(func=self.do_rlist) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        subparser.add_argument( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "--consider-checkpoints", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            action="store_true", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dest="consider_checkpoints", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            help="Show checkpoint archives in the repository contents list (default: hidden).", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        subparser.add_argument( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "--short", dest="short", action="store_true", help="only print the archive names, nothing else" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        subparser.add_argument( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "--format", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            metavar="FORMAT", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            dest="format", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            help="specify format for archive listing " '(default: "{archive:<36} {time} [{id}]{NL}")', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        subparser.add_argument( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "--json", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            action="store_true", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            help="Format output as JSON. " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "The form of ``--format`` is ignored, " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "but keys used in it are added to the JSON output. " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            "Some keys are always present. Note: JSON can only represent text. " 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            'A "barchive" key is therefore not available.', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        define_archive_filters_group(subparser) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         # borg recreate 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recreate_epilog = process_epilog( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             """ 
			 |