release: 0.2.2

This commit is contained in:
2026-01-15 17:24:54 +01:00
parent fb096f7897
commit 835244b7e0
134 changed files with 563 additions and 168 deletions

View File

@ -1,8 +1,8 @@
#!/usr/bin/env bash
set -euo pipefail
ENV_FILE="${ENV_FILE:-/etc/skd/env}"
UPDATE_ENV_FILE="${UPDATE_ENV_FILE:-/etc/skd/update.env}"
ADDON_ENV_FILE="${ADDON_ENV_FILE:-$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/update-addon.env}"
PROFILE="${PROFILE:-dev}"
SERVICE_URL="${SKD_UPDATE_SERVICE_URL:-}"
PROJECT_ID="${SKD_UPDATE_PROJECT_ID:-}"
TOKEN_FILE="${SKD_UPDATE_TOKEN_FILE:-}"
@ -16,13 +16,13 @@ usage() {
Usage: enroll_update_service.sh --enroll-token TOKEN [options]
Options:
--service-url URL Update-Service URL (default: SKD_UPDATE_SERVICE_URL)
--project-id ID Project ID (default: SKD_UPDATE_PROJECT_ID)
--service-url URL Update-Service URL (overrides env)
--project-id ID Project ID (overrides env)
--client-id ID Client ID (default: hostname)
--software-id ID Software ID (default: safe-kiddo)
--output PATH Write token to PATH (default: SKD_UPDATE_TOKEN_FILE if set)
--env-file PATH Read core env file (default: /etc/skd/env)
--update-env PATH Read update env file (default: /etc/skd/update.env)
--output PATH Write token to PATH (overrides env)
--profile NAME Environment profile: dev|stage|prod (default: dev)
--addon-env PATH Addon env file (default: ./update-addon.env)
-h, --help Show this help
EOF
}
@ -35,8 +35,8 @@ while [[ $# -gt 0 ]]; do
--software-id) SOFTWARE_ID="$2"; shift 2 ;;
--enroll-token) ENROLL_TOKEN="$2"; shift 2 ;;
--output) OUTPUT_PATH="$2"; shift 2 ;;
--env-file) ENV_FILE="$2"; shift 2 ;;
--update-env) UPDATE_ENV_FILE="$2"; shift 2 ;;
--profile) PROFILE="$2"; shift 2 ;;
--addon-env) ADDON_ENV_FILE="$2"; shift 2 ;;
-h|--help) usage; exit 0 ;;
*) echo "Unknown option: $1" >&2; usage; exit 1 ;;
esac
@ -44,16 +44,20 @@ done
read_env_value() {
local key="$1"
python3 - <<'PY' "${ENV_FILE}" "${UPDATE_ENV_FILE}" "${key}"
python3 - <<'PY' "${ADDON_ENV_FILE}" "${key}"
from pathlib import Path
import sys
env_paths = [Path(sys.argv[1]), Path(sys.argv[2])]
key = sys.argv[3]
env_paths = [Path(sys.argv[1])]
key = sys.argv[2]
for path in env_paths:
if not path.exists():
continue
for raw in path.read_text(encoding="utf-8").splitlines():
try:
lines = path.read_text(encoding="utf-8").splitlines()
except OSError:
continue
for raw in lines:
line = raw.strip()
if not line or line.startswith("#"):
continue
@ -67,9 +71,10 @@ for path in env_paths:
PY
}
SERVICE_URL="${SERVICE_URL:-$(read_env_value SKD_UPDATE_SERVICE_URL)}"
PROJECT_ID="${PROJECT_ID:-$(read_env_value SKD_UPDATE_PROJECT_ID)}"
TOKEN_FILE="${OUTPUT_PATH:-${TOKEN_FILE:-$(read_env_value SKD_UPDATE_TOKEN_FILE)}}"
PROFILE_UPPER="$(printf '%s' "${PROFILE}" | tr '[:lower:]' '[:upper:]')"
SERVICE_URL="${SERVICE_URL:-$(read_env_value "${PROFILE_UPPER}_UPDATE_SERVICE_URL")}"
PROJECT_ID="${PROJECT_ID:-$(read_env_value "${PROFILE_UPPER}_UPDATE_PROJECT_ID")}"
TOKEN_FILE="${OUTPUT_PATH:-${TOKEN_FILE:-$(read_env_value "${PROFILE_UPPER}_UPDATE_TOKEN_FILE")}}"
CLIENT_ID="${CLIENT_ID:-$(hostname)}"
if [[ -z "${SERVICE_URL}" || -z "${PROJECT_ID}" ]]; then