Files
gree-controller/ha-addon/render-repository.sh
T

49 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -Eeuo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
CONFIG="$SCRIPT_DIR/repository/gree-controller/config.yaml"
LOCKFILE="$PROJECT_ROOT/Cargo.lock"
REGISTRY="${REGISTRY:-oci.linuxiarz.pl}"
IMAGE_NAME="${IMAGE_NAME:-gree-controller}"
VERSION="$(awk -F '"' '/^version = "/ {print $2; exit}' "$PROJECT_ROOT/Cargo.toml")"
[[ -n "$VERSION" ]] || { echo "Cannot determine version from Cargo.toml" >&2; exit 1; }
IMAGE_REPO="${REGISTRY%/}/${IMAGE_NAME#/}"
python3 - "$CONFIG" "$LOCKFILE" "$VERSION" "$IMAGE_REPO" <<'PY2'
from pathlib import Path
import re
import sys
config = Path(sys.argv[1])
lockfile = Path(sys.argv[2])
version = sys.argv[3]
image = sys.argv[4]
# Home Assistant metadata is generated from the single version source: Cargo.toml.
lines = config.read_text(encoding="utf-8").splitlines()
out = []
for line in lines:
if line.startswith("version:"):
out.append(f'version: "{version}"')
elif line.startswith("image:"):
out.append(f'image: "{image}"')
else:
out.append(line)
config.write_text("\n".join(out) + "\n", encoding="utf-8")
# Keep Cargo.lock in sync so `cargo build --locked` remains usable after a version bump.
lock = lockfile.read_text(encoding="utf-8")
pattern = r'(\[\[package\]\]\nname = "gree-controller"\nversion = ")[^"]+("\n)'
updated, count = re.subn(pattern, rf'\g<1>{version}\g<2>', lock, count=1)
if count != 1:
raise SystemExit("Could not find gree-controller package version in Cargo.lock")
lockfile.write_text(updated, encoding="utf-8")
PY2
printf 'Synced version %s -> Cargo.lock + Home Assistant metadata; image %s:%s\n' \
"$VERSION" "$IMAGE_REPO" "$VERSION"