""" Extra xapian procedures. The python-xapian library exists, but doesn't seem to export metadata. """ import subprocess from typing import Optional def metadata_list(db: str, prefix: Optional[str] = None) -> list[str]: """ Enumerate all metadata entries in the given database. :param db: File system path to an Xapian "database". This is the directory containing iamglass, flintlock, and .glass files. :param prefix: Limit list to entries starting with this string. """ cmdline = ['xapian-metadata', 'list', db] if prefix: cmdline.append(prefix) cmd = subprocess.run(cmdline, capture_output=True, text=True) return cmd.stdout.split('\n') def metadata_get(db: str, key: str) -> str: """ Get a xapian metadata value. :param db: Same as for metadata_list :param key: Exact name of key to look up. """ cmd = subprocess.run(['xapian-metadata', 'get', db, key], capture_output=True, text=True) return cmd.stdout.strip()