38 lines
1.6 KiB
Python
38 lines
1.6 KiB
Python
from pathlib import Path
|
||
|
||
from dotenv import load_dotenv
|
||
from pydantic import Field
|
||
from pydantic_settings import BaseSettings, SettingsConfigDict
|
||
|
||
# .env рядом с корнём проекта (не зависит от текущей директории при запуске uvicorn)
|
||
_PROJECT_ROOT = Path(__file__).resolve().parent.parent
|
||
load_dotenv(_PROJECT_ROOT / ".env")
|
||
|
||
|
||
class Settings(BaseSettings):
|
||
model_config = SettingsConfigDict(
|
||
env_file=str(_PROJECT_ROOT / ".env"),
|
||
env_file_encoding="utf-8",
|
||
extra="ignore",
|
||
)
|
||
|
||
http_addr: str = Field(default="0.0.0.0:8080", validation_alias="HTTP_ADDR")
|
||
database_url: str = Field(default="", validation_alias="DATABASE_URL")
|
||
grafana_webhook_secret: str = Field(default="", validation_alias="GRAFANA_WEBHOOK_SECRET")
|
||
# HTTP API (service account): Grafana → Administration → Service accounts → токен
|
||
grafana_url: str = Field(default="", validation_alias="GRAFANA_URL")
|
||
grafana_service_account_token: str = Field(
|
||
default="",
|
||
validation_alias="GRAFANA_SERVICE_ACCOUNT_TOKEN",
|
||
)
|
||
vault_addr: str = Field(default="", validation_alias="VAULT_ADDR")
|
||
vault_token: str = Field(default="", validation_alias="VAULT_TOKEN")
|
||
# Forgejo (Gitea-совместимый API): Settings → Applications → токен, или при создании PAT
|
||
forgejo_url: str = Field(default="", validation_alias="FORGEJO_URL")
|
||
forgejo_token: str = Field(default="", validation_alias="FORGEJO_TOKEN")
|
||
log_level: str = Field(default="info", validation_alias="LOG_LEVEL")
|
||
|
||
|
||
def get_settings() -> Settings:
|
||
return Settings()
|