Files
light-heart-labs--dreamserver/ods/scripts/load-backend-contract.sh
T
wehub-resource-sync 9e8f1bbeed
Dashboard / frontend (push) Failing after 0s
Dashboard / api (push) Failing after 0s
Lint PowerShell / powershell-lint (ubuntu-latest) (push) Failing after 1s
Python Lint / Lint Python with Ruff (push) Failing after 1s
ShellCheck / Lint shell scripts (push) Failing after 1s
Matrix Smoke / linux-smoke (push) Failing after 1s
Matrix Smoke / distro: cachyos (push) Failing after 15s
Matrix Smoke / distro: linux-mint-21.3 (push) Failing after 15s
Matrix Smoke / distro: debian-12 (push) Failing after 5m21s
Matrix Smoke / distro: fedora-41 (push) Failing after 4m56s
Matrix Smoke / distro: ubuntu-24.04 (push) Failing after 2m13s
Matrix Smoke / distro: rocky-9 (push) Failing after 10m39s
Matrix Smoke / distro: manjaro (push) Failing after 12m11s
Matrix Smoke / distro: opensuse-tw (push) Failing after 11m53s
Matrix Smoke / distro: archlinux (push) Failing after 20m3s
Matrix Smoke / distro: ubuntu-22.04 (push) Failing after 13m49s
Validate .env Schema / tier-1-env-validation (push) Successful in 52s
Validate .env Schema / tier-2-env-validation (push) Successful in 44s
Validate .env Schema / tier-3-env-validation (push) Successful in 52s
Validate .env Schema / tier-4-env-validation (push) Successful in 51s
Validate Extensions Catalog / Check catalog is up-to-date (push) Failing after 9m47s
Secret Scan / Scan for secrets (push) Failing after 21m4s
Validate Docker Compose / Validate Docker Compose files (push) Has been cancelled
Python Type Check / Type check with mypy (push) Has been cancelled
Validate .env Schema / tier-0-env-validation (push) Has been cancelled
Test Linux / integration-smoke (push) Has been cancelled
Lint PowerShell / powershell-lint (windows-latest) (push) Has been cancelled
Matrix Smoke / macos-smoke (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:31:33 +08:00

79 lines
2.5 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
BACKEND_ID=""
ENV_MODE="false"
while [[ $# -gt 0 ]]; do
case "$1" in
--backend)
BACKEND_ID="${2:-}"
shift 2
;;
--env)
ENV_MODE="true"
shift
;;
*)
echo "Unknown argument: $1" >&2
exit 1
;;
esac
done
if [[ -z "$BACKEND_ID" ]]; then
echo "Missing required argument: --backend" >&2
exit 1
fi
CONTRACT_FILE="${ROOT_DIR}/config/backends/${BACKEND_ID}.json"
if [[ ! -f "$CONTRACT_FILE" ]]; then
echo "Backend contract not found: $CONTRACT_FILE" >&2
exit 1
fi
if [[ "$ENV_MODE" == "true" ]]; then
PYTHON_CMD="python3"
if [[ -f "$ROOT_DIR/lib/python-cmd.sh" ]]; then
. "$ROOT_DIR/lib/python-cmd.sh"
PYTHON_CMD="$(ods_detect_python_cmd)"
elif command -v python >/dev/null 2>&1; then
PYTHON_CMD="python"
fi
"$PYTHON_CMD" - "$CONTRACT_FILE" <<'PY'
import json
import sys
contract = json.load(open(sys.argv[1], "r", encoding="utf-8"))
def out(key, value):
safe = str(value).replace("\\", "\\\\").replace('"', '\\"')
print(f'{key}="{safe}"')
out("BACKEND_CONTRACT_ID", contract.get("id", ""))
out("BACKEND_LLM_ENGINE", contract.get("llm_engine", ""))
out("BACKEND_SERVICE_NAME", contract.get("service_name", ""))
out("BACKEND_PUBLIC_API_PORT", contract.get("public_api_port", ""))
out("BACKEND_PUBLIC_HEALTH_URL", contract.get("public_health_url", ""))
out("BACKEND_PROVIDER_NAME", contract.get("provider_name", ""))
out("BACKEND_PROVIDER_URL", contract.get("provider_url", ""))
out("BACKEND_CONTRACT_FILE", sys.argv[1])
runtime = contract.get("runtime", {})
lemonade = runtime.get("lemonade", {}) if isinstance(runtime, dict) else {}
out("BACKEND_LEMONADE_CONTAINER_IMAGE", lemonade.get("container_image", ""))
out("BACKEND_LEMONADE_WINDOWS_VERSION", lemonade.get("windows_version", ""))
out("BACKEND_LEMONADE_WINDOWS_MSI_FILE", lemonade.get("windows_msi_file", ""))
out("BACKEND_LEMONADE_WINDOWS_EXECUTABLE", lemonade.get("windows_executable", ""))
out("BACKEND_LEMONADE_API_PORT", lemonade.get("api_port", ""))
out("BACKEND_LEMONADE_HEALTH_PATH", lemonade.get("health_path", ""))
out("BACKEND_LEMONADE_LINUX_BACKEND", lemonade.get("linux_backend", ""))
out("BACKEND_LEMONADE_WINDOWS_BACKEND", lemonade.get("windows_backend", ""))
PY
else
cat "$CONTRACT_FILE"
fi