79 lines
1.7 KiB
Bash
Executable File
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}" |