38 lines
1.5 KiB
Python
38 lines
1.5 KiB
Python
"""Shared configuration constants for devx scripts and API clients.
|
|
|
|
All defaults can be overridden via environment variables with the ``DEVX_``
|
|
prefix. Projects consuming devx can set these in their ``.env`` files.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import re
|
|
|
|
# API endpoints — override via env vars for different Gitea/Vikunja instances
|
|
GITEA_API_URL = os.getenv("DEVX_GITEA_API_URL", "https://git.oblachno.oblachno.fyi/api/v1")
|
|
VIKUNJA_API_URL = os.getenv("DEVX_VIKUNJA_API_URL", "https://work.oblachno.oblachno.fyi/api/v1")
|
|
|
|
# Organization defaults — each project MUST set DEVX_REPO_OWNER explicitly.
|
|
# No default: prevents silent 404s when the wrong owner is used.
|
|
REPO_OWNER = os.getenv("DEVX_REPO_OWNER", "")
|
|
|
|
# Task prefix for Vikunja task IDs — each project sets its own (GRM, DEVX, INFRA, etc.)
|
|
TASK_PREFIX = os.getenv("DEVX_TASK_PREFIX", "DEVX")
|
|
TASK_ID_RE = re.compile(rf"{TASK_PREFIX}-\d+")
|
|
|
|
# Vikunja project ID — each project uses a different Vikunja project
|
|
VIKUNJA_PROJECT_ID = int(os.getenv("DEVX_VIKUNJA_PROJECT_ID", "6"))
|
|
|
|
# HTTP client defaults
|
|
DEFAULT_TIMEOUT = 30
|
|
DEFAULT_PER_PAGE = 50
|
|
|
|
# Retry configuration for transient errors (429, 5xx, connection errors)
|
|
MAX_RETRIES = 3
|
|
RETRY_BACKOFF_BASE = 2 # seconds: 2, 4, 8
|
|
RETRY_STATUS_CODES = {429, 500, 502, 503, 504}
|
|
|
|
# Conventional commit regex — used by validate_commit_msg.py
|
|
CONVENTIONAL_RE = re.compile(r"^(feat|fix|chore|docs|style|refactor|perf|test|ci|build|revert)(\(.+\))?: .+")
|