Add machine readable --list output

This commit is contained in:
apainintheneck 2022-09-08 00:17:06 -07:00
parent 72d1a044d9
commit d706865850
3 changed files with 30 additions and 11 deletions

View file

@ -85,7 +85,13 @@ def parse_args(args=[]):
action="store_const", action="store_const",
const=postconfig_list, const=postconfig_list,
dest="postconfig_cmd", dest="postconfig_cmd",
help="List all configured journals", help="""
List all configured journals.
Optional parameters:
--format [json or yaml]
""",
) )
standalone.add_argument( standalone.add_argument(
"--ls", "--ls",

View file

@ -56,10 +56,10 @@ def preconfig_version(_):
print(output) print(output)
def postconfig_list(config, **kwargs): def postconfig_list(args, config, **kwargs):
from jrnl.output import list_journals from jrnl.output import list_journals
print(list_journals(config)) print(list_journals(config, args.export))
def postconfig_import(args, config, **kwargs): def postconfig_import(args, config, **kwargs):

View file

@ -25,10 +25,23 @@ def deprecated_cmd(old_cmd, new_cmd, callback=None, **kwargs):
callback(**kwargs) callback(**kwargs)
def list_journals(configuration): def list_journals(configuration, format=None):
from jrnl import config from jrnl import config
"""List the journals specified in the configuration file""" """List the journals specified in the configuration file"""
if format == "json":
import json
return json.dumps(configuration["journals"])
elif format == "yaml":
from io import StringIO
from ruamel.yaml import YAML
output = StringIO()
YAML().dump(configuration["journals"], output)
return output.getvalue()
else:
result = f"Journals defined in config ({config.get_config_path()})\n" result = f"Journals defined in config ({config.get_config_path()})\n"
ml = min(max(len(k) for k in configuration["journals"]), 20) ml = min(max(len(k) for k in configuration["journals"]), 20)
for journal, cfg in configuration["journals"].items(): for journal, cfg in configuration["journals"].items():