Refactor list_journals()

Create three new methods for each journal list format.
- JSON, YAML, STDOUT
This commit is contained in:
apainintheneck 2022-09-18 10:08:19 -07:00
parent d706865850
commit ebbf66b0e2

View file

@ -25,32 +25,50 @@ def deprecated_cmd(old_cmd, new_cmd, callback=None, **kwargs):
callback(**kwargs) callback(**kwargs)
def list_journals(configuration, format=None): def journal_list_to_json(journal_list):
from jrnl import config
"""List the journals specified in the configuration file"""
if format == "json":
import json import json
return json.dumps(configuration["journals"]) return json.dumps(journal_list)
elif format == "yaml":
def journal_list_to_yaml(journal_list):
from io import StringIO from io import StringIO
from ruamel.yaml import YAML from ruamel.yaml import YAML
output = StringIO() output = StringIO()
YAML().dump(configuration["journals"], output) YAML().dump(journal_list, output)
return output.getvalue() return output.getvalue()
else:
result = f"Journals defined in config ({config.get_config_path()})\n"
ml = min(max(len(k) for k in configuration["journals"]), 20) def journal_list_to_stdout(journal_list):
for journal, cfg in configuration["journals"].items(): result = f"Journals defined in config ({journal_list['config_path']})\n"
ml = min(max(len(k) for k in journal_list["journals"]), 20)
for journal, cfg in journal_list["journals"].items():
result += " * {:{}} -> {}\n".format( result += " * {:{}} -> {}\n".format(
journal, ml, cfg["journal"] if isinstance(cfg, dict) else cfg journal, ml, cfg["journal"] if isinstance(cfg, dict) else cfg
) )
return result return result
def list_journals(configuration, format=None):
from jrnl import config
"""List the journals specified in the configuration file"""
journal_list = {
"config_path": config.get_config_path(),
"journals": configuration["journals"],
}
if format == "json":
return journal_list_to_json(journal_list)
elif format == "yaml":
return journal_list_to_yaml(journal_list)
else:
return journal_list_to_stdout(journal_list)
def print_msg(msg: Message, **kwargs) -> Union[None, str]: def print_msg(msg: Message, **kwargs) -> Union[None, str]:
"""Helper function to print a single message""" """Helper function to print a single message"""
kwargs["style"] = msg.style kwargs["style"] = msg.style