Updated so it now can either read from a path or environment variable

This commit is contained in:
florian committed 2026-10-16 22:41:50 +02:00
1 parent c2aa63ec54
commit dd5bd18bcb
3 files changed
+33 -9

No files matched your search

+4 -5
View File
@@ -1,6 +1,5 @@
from .credentials_loader import return_credentials, cleanup_secret_files
import logging
from .credentials_loader import get_secret, cleanup_secret_files, MissingCredentialError
__all__ = [
"return_credentials",
"cleanup_secret_files",
]
logging.getLogger(__name__).addHandler(logging.NullHandler())
__all__ = ["get_secret","cleanup_secret_files","MissingCredentialError"]
+28 -2
View File
@@ -1,9 +1,35 @@
from simple_logger_handler import setup_logger
import logging
import os
from typing import Set
logger = setup_logger(__name__)
logger = logging.getLogger(__name__)
class MissingCredentialError(RuntimeError):
"""Neither the environment variable nor the secret file provided a value."""
def get_secret(env_var: str, path: str | None = None) -> str:
"""Resolve a secret from an environment variable, falling back to a file.
Resolution order:
1. The environment variable ``env_var`` (if set and non-empty).
2. The file at ``path`` (if given and it exists).
Raises:
MissingCredentialError: If neither source provides a value.
"""
value = os.getenv(env_var, "").strip()
if value:
logger.debug(f"Loaded secret from environment variable {env_var}")
return value
if path:
try:
return return_credentials(path)
except FileNotFoundError:
pass
sources = f"environment variable {env_var}" + (f" or file {path}" if path else "")
raise MissingCredentialError(f"No credential found: set {sources}")
def return_credentials(path: str) -> str:
"""Read and return credentials from a file."""