mirror of
https://github.com/borgbackup/borg.git
synced 2024-12-25 09:19:31 +00:00
use custom JSON encoder for repr'ing Borg objects consistently
This commit is contained in:
parent
7cbade2f8c
commit
2ab5d0f213
1 changed files with 28 additions and 8 deletions
|
@ -65,8 +65,25 @@
|
|||
STATS_HEADER = " Original size Compressed size Deduplicated size"
|
||||
|
||||
|
||||
class BorgJsonEncoder(json.JSONEncoder):
|
||||
def default(self, o):
|
||||
if isinstance(o, Repository) or isinstance(o, RemoteRepository):
|
||||
return {
|
||||
'id': bin_to_hex(o.id),
|
||||
'location': o._location.canonical_path(),
|
||||
}
|
||||
if isinstance(o, Archive):
|
||||
return o.info()
|
||||
if isinstance(o, Cache):
|
||||
return {
|
||||
'path': o.path,
|
||||
'stats': o.stats(),
|
||||
}
|
||||
return super().default(o)
|
||||
|
||||
|
||||
def print_as_json(obj):
|
||||
print(json.dumps(obj, sort_keys=True, indent=4))
|
||||
print(json.dumps(obj, sort_keys=True, indent=4, cls=BorgJsonEncoder))
|
||||
|
||||
|
||||
def argument(args, str_or_bool):
|
||||
|
@ -371,9 +388,10 @@ def create_inner(archive, cache):
|
|||
if args.stats:
|
||||
if args.json:
|
||||
print_as_json({
|
||||
'cache_stats': cache.stats(),
|
||||
'repository': repository,
|
||||
'cache': cache,
|
||||
'stats': archive.stats.as_dict(),
|
||||
'archive': archive.info(),
|
||||
'archive': archive,
|
||||
})
|
||||
else:
|
||||
log_multi(DASHES,
|
||||
|
@ -1026,9 +1044,8 @@ def _info_repository(self, args, repository, key, cache):
|
|||
encryption += '\nKey file: %s' % key.find_key()
|
||||
|
||||
info = {
|
||||
'id': bin_to_hex(repository.id),
|
||||
'location': repository._location.canonical_path(),
|
||||
'cache': cache.path,
|
||||
'repository': repository,
|
||||
'cache': cache,
|
||||
'security_dir': cache.security_manager.dir,
|
||||
'encryption': encryption,
|
||||
}
|
||||
|
@ -1041,9 +1058,12 @@ def _info_repository(self, args, repository, key, cache):
|
|||
Repository ID: {id}
|
||||
Location: {location}
|
||||
{encryption}
|
||||
Cache: {cache}
|
||||
Cache: {cache.path}
|
||||
Security dir: {security_dir}
|
||||
""").strip().format_map(info))
|
||||
""").strip().format(
|
||||
id=bin_to_hex(repository.id),
|
||||
location=repository._location.canonical_path(),
|
||||
**info))
|
||||
print(DASHES)
|
||||
print(STATS_HEADER)
|
||||
print(str(cache))
|
||||
|
|
Loading…
Reference in a new issue