v0.14.15-fix

This commit is contained in:
Mateusz Gruszczyński
2026-09-16 17:07:17 +02:00
parent 1862fed87f
commit c7d47db64e
26 changed files with 324 additions and 377 deletions
+27
View File
@@ -35,6 +35,8 @@ CONFIG="$SCRIPT_DIR/repository/$ADDON_DIR/config.yaml"
LOCKFILE="$PROJECT_ROOT/Cargo.lock"
INTEGRATION_MANIFEST="$SCRIPT_DIR/home-assistant/custom_components/$INTEGRATION_DOMAIN/manifest.json"
REPOSITORY_CONFIG="$SCRIPT_DIR/repository/repository.yaml"
RUN_SCRIPT="$SCRIPT_DIR/run.sh"
DOCKERFILE="$SCRIPT_DIR/Dockerfile"
[[ -f "$CONFIG" ]] || { echo "Missing add-on config: $CONFIG" >&2; exit 1; }
[[ -f "$INTEGRATION_MANIFEST" ]] || { echo "Missing integration manifest: $INTEGRATION_MANIFEST" >&2; exit 1; }
@@ -87,6 +89,30 @@ PY
printf 'Synced version %s; image %s\n' "$VERSION" "$IMAGE_REPO"
}
validate_addon_port_contract() {
local ingress_port
ingress_port="$(awk '/^ingress_port:/ {print $2; exit}' "$CONFIG")"
[[ "$ingress_port" =~ ^[0-9]+$ ]] || { echo "Invalid ingress_port in $CONFIG" >&2; exit 1; }
grep -Fqx "readonly HA_HTTP_PORT=${ingress_port}" "$RUN_SCRIPT" || {
echo "HA port contract mismatch: ingress_port=${ingress_port}, run.sh differs" >&2
exit 1
}
grep -Fq "watchdog: \"http://[HOST]:[PORT:${ingress_port}]/api/health\"" "$CONFIG" || {
echo "HA port contract mismatch: watchdog must use [PORT:${ingress_port}]" >&2
exit 1
}
grep -Fqx "hassio_api: true" "$CONFIG" || {
echo "HA add-on contract mismatch: hassio_api must be enabled for Supervisor runtime discovery" >&2
exit 1
}
local expose_count
expose_count="$(grep -Ec "^EXPOSE ${ingress_port}/tcp$" "$DOCKERFILE" || true)"
(( expose_count >= 1 )) || {
echo "HA port contract mismatch: Dockerfile must expose ${ingress_port}/tcp" >&2
exit 1
}
}
ensure_builder() {
command -v docker >/dev/null 2>&1 || { echo "docker is required" >&2; exit 1; }
docker buildx version >/dev/null 2>&1 || { echo "docker buildx is required" >&2; exit 1; }
@@ -136,6 +162,7 @@ build_load() {
}
render_metadata
validate_addon_port_contract
case "$ACTION" in
render) ;;