diff --git a/src/karl/services/passwords.py b/src/karl/services/passwords.py index bf2cda0..9f662b0 100644 --- a/src/karl/services/passwords.py +++ b/src/karl/services/passwords.py @@ -6,6 +6,10 @@ import keyring from injectable import injectable from pykeepass import PyKeePass, create_database +import logging + +logger = logging.getLogger(__name__) + class KeyRequest: def __init__(self, prompt: str): self.field_name = None @@ -14,7 +18,8 @@ class KeyRequest: self._parse_prompt(prompt) def _parse_prompt(self, prompt: str): - prompt_parts = prompt.split(".") + logger.debug(f"Got prompt: {prompt}") + prompt_parts = prompt.replace('\n', '').split(".") key = None match len(prompt_parts): case 1: @@ -26,6 +31,7 @@ class KeyRequest: case _: key = None if key is None: + logger.warning(f"Prompt {prompt} cannot be parsed") return key_parts = key.split("/") self.path = key_parts[:] if len(key_parts) > 1 else None @@ -57,6 +63,8 @@ class Passwords: request = KeyRequest(k) with self.open() as kp: kp_entry = kp.find_entries(path=request.path, first=True, title=request.entry_name) + if kp_entry is None: + logger.warning(f"No value found for key {k}") output[k] = self._get_field_value(kp_entry, request.field_name) return output