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

79 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)"
if [[ -f "$SCRIPT_DIR/.env" ]]; then
set -a
# shellcheck disable=SC1091
source "$SCRIPT_DIR/.env"
set +a
fi
HA_REPO_PATH="${HA_REPO_PATH:-../gree-controller-ha-addon}"
HA_REPO_BRANCH="${HA_REPO_BRANCH:-master}"
if [[ "$HA_REPO_PATH" != /* ]]; then
HA_REPO_PATH="$PROJECT_ROOT/$HA_REPO_PATH"
fi
HA_REPO_PATH="$(realpath -m "$HA_REPO_PATH")"
VERSION="$(
awk -F '"' '/^version = "/ {print $2; exit}' \
"$PROJECT_ROOT/Cargo.toml"
)"
[[ -n "$VERSION" ]] || {
echo "Cannot determine version from Cargo.toml" >&2
exit 1
}
command -v git >/dev/null 2>&1 || {
echo "git is required" >&2
exit 1
}
command -v rsync >/dev/null 2>&1 || {
echo "rsync is required" >&2
exit 1
}
[[ -d "$HA_REPO_PATH/.git" ]] || {
echo "HA_REPO_PATH is not a Git repository: $HA_REPO_PATH" >&2
exit 1
}
echo "==> Building and pushing OCI image ${VERSION}"
"$SCRIPT_DIR/build.sh" push
echo "==> Syncing Home Assistant repository"
rsync -a --delete \
--exclude='.git/' \
"$SCRIPT_DIR/repository/" \
"$HA_REPO_PATH/"
cd "$HA_REPO_PATH"
echo "==> Updating branch ${HA_REPO_BRANCH}"
git checkout "$HA_REPO_BRANCH"
git add -A
if git diff --cached --quiet; then
echo "No Home Assistant repository changes to publish."
exit 0
fi
echo "==> Committing Home Assistant add-on ${VERSION}"
git commit -m "GREE Controller ${VERSION}"
echo "==> Pushing to Gitea"
git push origin "$HA_REPO_BRANCH"
echo
echo "Published:"
echo " image version: ${VERSION}"
echo " HA repository: ${HA_REPO_PATH}"
echo " branch: ${HA_REPO_BRANCH}"