|
@@ -1032,21 +1032,30 @@ class Archiver:
|
|
|
|
|
|
def _list_archive(self, args, repository, manifest, key, write):
|
|
|
matcher, _ = self.build_matcher(args.patterns, args.paths)
|
|
|
- with Cache(repository, key, manifest, lock_wait=self.lock_wait) as cache:
|
|
|
+ if args.format is not None:
|
|
|
+ format = args.format
|
|
|
+ elif args.short:
|
|
|
+ format = "{path}{NL}"
|
|
|
+ else:
|
|
|
+ format = "{mode} {user:6} {group:6} {size:8} {isomtime} {path}{extra}{NL}"
|
|
|
+
|
|
|
+ def _list_inner(cache):
|
|
|
archive = Archive(repository, key, manifest, args.location.archive, cache=cache,
|
|
|
consider_part_files=args.consider_part_files)
|
|
|
- if args.format is not None:
|
|
|
- format = args.format
|
|
|
- elif args.short:
|
|
|
- format = "{path}{NL}"
|
|
|
- else:
|
|
|
- format = "{mode} {user:6} {group:6} {size:8} {isomtime} {path}{extra}{NL}"
|
|
|
|
|
|
formatter = ItemFormatter(archive, format, json=args.json)
|
|
|
write(safe_encode(formatter.begin()))
|
|
|
for item in archive.iter_items(lambda item: matcher.match(item.path)):
|
|
|
write(safe_encode(formatter.format_item(item)))
|
|
|
write(safe_encode(formatter.end()))
|
|
|
+
|
|
|
+ # Only load the cache if it will be used
|
|
|
+ if ItemFormatter.format_needs_cache(format):
|
|
|
+ with Cache(repository, key, manifest, lock_wait=self.lock_wait) as cache:
|
|
|
+ _list_inner(cache)
|
|
|
+ else:
|
|
|
+ _list_inner(cache=None)
|
|
|
+
|
|
|
return self.exit_code
|
|
|
|
|
|
def _list_repository(self, args, manifest, write):
|