v0.14.15-fix
This commit is contained in:
@@ -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) ;;
|
||||
|
||||
Reference in New Issue
Block a user