#!/usr/bin/env bash set -e if [ -n "$(git status --porcelain)" ]; then echo "Error: You have uncommitted local changes." echo "Please commit or stash them before releasing." echo "" echo "Uncommitted files:" git status --short exit 1 fi VERSION_FILE="VERSION" SCRIPT_FILE="post_installation_script/Nachinstallationsarbeiten_LC_Esslingen_XFCE.sh" if [ ! -f "$VERSION_FILE" ]; then echo "Error: $VERSION_FILE not found" exit 1 fi CURRENT_VERSION=$(cat "$VERSION_FILE" | tr -d '\n') if [ ! -f "$SCRIPT_FILE" ]; then echo "Error: $SCRIPT_FILE not found" exit 1 fi CURRENT_MAJOR=${CURRENT_VERSION#v} NEXT_VERSION=$((CURRENT_MAJOR + 1)) NEXT_VERSION_STR="v$NEXT_VERSION" echo "Current version: $CURRENT_VERSION" echo "Proposed version: $NEXT_VERSION_STR" echo "" read -p "Confirm release version $NEXT_VERSION_STR? [y/N]: " confirm if [[ "$confirm" != "y" && "$confirm" != "Y" ]]; then echo "Release aborted." exit 0 fi echo "$NEXT_VERSION_STR" > "$VERSION_FILE" sed -i.bak "s/^SCRIPT_VERSION=.*/SCRIPT_VERSION=\"$NEXT_VERSION_STR\"/" "$SCRIPT_FILE" if [ -f "${SCRIPT_FILE}.bak" ]; then rm "${SCRIPT_FILE}.bak" fi git add "$VERSION_FILE" "$SCRIPT_FILE" git commit -m "Release $NEXT_VERSION_STR" git tag -a "$NEXT_VERSION_STR" -m "Release $NEXT_VERSION_STR" echo "" echo "Tag $NEXT_VERSION_STR created locally." read -p "Push to origin (includes tags)? [y/N]: " push_confirm if [[ "$push_confirm" == "y" || "$push_confirm" == "Y" ]]; then git push origin --tags echo "Done! Gitea will create release from tag $NEXT_VERSION_STR" else echo "Release prepared locally. Push manually with: git push origin --tags" fi