#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" DIST_DIR="${DIST_DIR:-${REPO_ROOT}/dist}" RELEASE_REPO_URL="${RELEASE_REPO_URL:-https://git.halonice.com/yuanzhen869/shunt-rules-release.git}" TARGET_BRANCH="${TARGET_BRANCH:-main}" COMMIT_MESSAGE="${COMMIT_MESSAGE:-chore: release dist}" if [[ ! -d "${DIST_DIR}" ]]; then echo "dist directory not found: ${DIST_DIR}" >&2 exit 1 fi tmp_dir="$(mktemp -d)" cleanup() { rm -rf "${tmp_dir}" } trap cleanup EXIT work_dir="${tmp_dir}/release" git clone --branch "${TARGET_BRANCH}" --single-branch "${RELEASE_REPO_URL}" "${work_dir}" >/dev/null find "${work_dir}" -mindepth 1 -maxdepth 1 ! -name '.git' -exec rm -rf {} + if command -v rsync >/dev/null 2>&1; then rsync -a "${DIST_DIR}/" "${work_dir}/" else cp -a "${DIST_DIR}/." "${work_dir}/" fi cd "${work_dir}" git add -A if git diff --cached --quiet; then echo "no changes in dist, skip release" exit 0 fi git -c user.name="shunt-rules-bot" -c user.email="shunt-rules-bot@local" commit -m "${COMMIT_MESSAGE}" >/dev/null git push origin "${TARGET_BRANCH}" echo "release pushed to ${RELEASE_REPO_URL} (${TARGET_BRANCH})"