feat: add one-click dist release script
This commit is contained in:
Executable
+37
@@ -0,0 +1,37 @@
|
||||
#!/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 {} +
|
||||
rsync -a "${DIST_DIR}/" "${work_dir}/"
|
||||
|
||||
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})"
|
||||
Reference in New Issue
Block a user