mirror of
https://github.com/derrod/legendary.git
synced 2024-12-22 17:55:27 +00:00
[cli] Add global "-J" option to pretty-print JSON
This commit is contained in:
parent
56fdfba787
commit
ead2bdc16c
|
@ -61,6 +61,13 @@ class LegendaryCLI:
|
||||||
fallback=self.core.lgd.aliases.get(name.lower(), name)
|
fallback=self.core.lgd.aliases.get(name.lower(), name)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _print_json(data, pretty=False):
|
||||||
|
if pretty:
|
||||||
|
print(json.dumps(data, indent=2, sort_keys=True))
|
||||||
|
else:
|
||||||
|
print(json.dumps(data))
|
||||||
|
|
||||||
def auth(self, args):
|
def auth(self, args):
|
||||||
if args.auth_delete:
|
if args.auth_delete:
|
||||||
self.core.lgd.invalidate_userdata()
|
self.core.lgd.invalidate_userdata()
|
||||||
|
@ -205,8 +212,7 @@ class LegendaryCLI:
|
||||||
_j['dlcs'] = [vars(dlc) for dlc in dlc_list[game.asset_info.catalog_item_id]]
|
_j['dlcs'] = [vars(dlc) for dlc in dlc_list[game.asset_info.catalog_item_id]]
|
||||||
_out.append(_j)
|
_out.append(_j)
|
||||||
|
|
||||||
print(json.dumps(_out, sort_keys=True, indent=2))
|
return self._print_json(_out, args.pretty_json)
|
||||||
return
|
|
||||||
|
|
||||||
print('\nAvailable games:')
|
print('\nAvailable games:')
|
||||||
for game in games:
|
for game in games:
|
||||||
|
@ -256,8 +262,7 @@ class LegendaryCLI:
|
||||||
return
|
return
|
||||||
|
|
||||||
if args.json:
|
if args.json:
|
||||||
print(json.dumps([vars(g) for g in games], indent=2, sort_keys=True))
|
return self._print_json([vars(g) for g in games], args.pretty_json)
|
||||||
return
|
|
||||||
|
|
||||||
installed_dlcs = defaultdict(list)
|
installed_dlcs = defaultdict(list)
|
||||||
for game in games.copy():
|
for game in games.copy():
|
||||||
|
@ -344,7 +349,7 @@ class LegendaryCLI:
|
||||||
file_size=fm.file_size,
|
file_size=fm.file_size,
|
||||||
flags=fm.flags,
|
flags=fm.flags,
|
||||||
))
|
))
|
||||||
print(json.dumps(_files, sort_keys=True, indent=2))
|
return self._print_json(_files, args.pretty_json)
|
||||||
else:
|
else:
|
||||||
install_tags = set()
|
install_tags = set()
|
||||||
for fm in files:
|
for fm in files:
|
||||||
|
@ -567,8 +572,7 @@ class LegendaryCLI:
|
||||||
self.core.lgd.config[app_name]['wrapper'] = args.wrapper
|
self.core.lgd.config[app_name]['wrapper'] = args.wrapper
|
||||||
|
|
||||||
if args.json:
|
if args.json:
|
||||||
print(json.dumps(vars(params)))
|
return self._print_json(vars(params), args.pretty_json)
|
||||||
return
|
|
||||||
|
|
||||||
full_params = list()
|
full_params = list()
|
||||||
full_params.extend(params.launch_command)
|
full_params.extend(params.launch_command)
|
||||||
|
@ -618,8 +622,7 @@ class LegendaryCLI:
|
||||||
|
|
||||||
origin_uri = self.core.get_origin_uri(args.app_name, args.offline)
|
origin_uri = self.core.get_origin_uri(args.app_name, args.offline)
|
||||||
if args.json:
|
if args.json:
|
||||||
print(json.dumps(dict(uri=origin_uri)))
|
return self._print_json(dict(uri=origin_uri), args.pretty_json)
|
||||||
return
|
|
||||||
|
|
||||||
if os.name == 'nt':
|
if os.name == 'nt':
|
||||||
logger.debug(f'Opening Origin URI: {origin_uri}')
|
logger.debug(f'Opening Origin URI: {origin_uri}')
|
||||||
|
@ -1222,14 +1225,13 @@ class LegendaryCLI:
|
||||||
games_available = len(self.core.get_game_list(update_assets=not args.offline))
|
games_available = len(self.core.get_game_list(update_assets=not args.offline))
|
||||||
games_installed = len(self.core.get_installed_list())
|
games_installed = len(self.core.get_installed_list())
|
||||||
if args.json:
|
if args.json:
|
||||||
print(json.dumps(dict(
|
return self._print_json(dict(
|
||||||
account=user_name,
|
account=user_name,
|
||||||
games_available=games_available,
|
games_available=games_available,
|
||||||
games_installed=games_installed,
|
games_installed=games_installed,
|
||||||
egl_sync_enabled=self.core.egl_sync_enabled,
|
egl_sync_enabled=self.core.egl_sync_enabled,
|
||||||
config_directory=self.core.lgd.path
|
config_directory=self.core.lgd.path
|
||||||
), indent=2, sort_keys=True))
|
), args.pretty_json)
|
||||||
return
|
|
||||||
|
|
||||||
print(f'Epic account: {user_name}')
|
print(f'Epic account: {user_name}')
|
||||||
print(f'Games available: {games_available}')
|
print(f'Games available: {games_available}')
|
||||||
|
@ -1470,7 +1472,7 @@ class LegendaryCLI:
|
||||||
json_out['install'][info_item.json_name] = info_item.json_value
|
json_out['install'][info_item.json_name] = info_item.json_value
|
||||||
for info_item in info_items['manifest']:
|
for info_item in info_items['manifest']:
|
||||||
json_out['manifest'][info_item.json_name] = info_item.json_value
|
json_out['manifest'][info_item.json_name] = info_item.json_value
|
||||||
print(json.dumps(json_out, indent=2, sort_keys=True))
|
return self._print_json(json_out, args.pretty_json)
|
||||||
|
|
||||||
def alias(self, args):
|
def alias(self, args):
|
||||||
if args.action not in ('add', 'rename', 'remove', 'list'):
|
if args.action not in ('add', 'rename', 'remove', 'list'):
|
||||||
|
@ -1570,6 +1572,8 @@ def main():
|
||||||
parser.add_argument('-V', '--version', dest='version', action='store_true', help='Print version and exit')
|
parser.add_argument('-V', '--version', dest='version', action='store_true', help='Print version and exit')
|
||||||
parser.add_argument('-c', '--config-file', dest='config_file', action='store', metavar='<path/name>',
|
parser.add_argument('-c', '--config-file', dest='config_file', action='store', metavar='<path/name>',
|
||||||
help='Specify custom config file or name for the config file in the default directory.')
|
help='Specify custom config file or name for the config file in the default directory.')
|
||||||
|
parser.add_argument('-J', '--pretty-json', dest='pretty_json', action='store_true',
|
||||||
|
help='Pretty-print JSON')
|
||||||
|
|
||||||
# all the commands
|
# all the commands
|
||||||
subparsers = parser.add_subparsers(title='Commands', dest='subparser_name')
|
subparsers = parser.add_subparsers(title='Commands', dest='subparser_name')
|
||||||
|
|
Loading…
Reference in a new issue