chore: passwords logging

This commit is contained in:
Piotr Dec 2026-06-11 14:58:17 +02:00
parent 6f14bd7db1
commit 3ec1942b4e
Signed by: stawros
GPG key ID: 74B18A3F0F1E99C0

View file

@ -6,6 +6,10 @@ import keyring
from injectable import injectable from injectable import injectable
from pykeepass import PyKeePass, create_database from pykeepass import PyKeePass, create_database
import logging
logger = logging.getLogger(__name__)
class KeyRequest: class KeyRequest:
def __init__(self, prompt: str): def __init__(self, prompt: str):
self.field_name = None self.field_name = None
@ -14,7 +18,8 @@ class KeyRequest:
self._parse_prompt(prompt) self._parse_prompt(prompt)
def _parse_prompt(self, prompt: str): def _parse_prompt(self, prompt: str):
prompt_parts = prompt.split(".") logger.debug(f"Got prompt: {prompt}")
prompt_parts = prompt.replace('\n', '').split(".")
key = None key = None
match len(prompt_parts): match len(prompt_parts):
case 1: case 1:
@ -26,6 +31,7 @@ class KeyRequest:
case _: case _:
key = None key = None
if key is None: if key is None:
logger.warning(f"Prompt {prompt} cannot be parsed")
return return
key_parts = key.split("/") key_parts = key.split("/")
self.path = key_parts[:] if len(key_parts) > 1 else None self.path = key_parts[:] if len(key_parts) > 1 else None
@ -57,6 +63,8 @@ class Passwords:
request = KeyRequest(k) request = KeyRequest(k)
with self.open() as kp: with self.open() as kp:
kp_entry = kp.find_entries(path=request.path, first=True, title=request.entry_name) 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) output[k] = self._get_field_value(kp_entry, request.field_name)
return output return output