A Transparent and Verifiable Way to Sync the AT Protocol's PLC Directory

bump-version script

+72
+72
scripts/bump-version.sh
··· 1 + #!/bin/bash 2 + 3 + set -e 4 + 5 + # Colors 6 + RED='\033[0;31m' 7 + GREEN='\033[0;32m' 8 + YELLOW='\033[1;33m' 9 + NC='\033[0m' # No Color 10 + 11 + # Check if git is clean 12 + if [[ -n $(git status -s) ]]; then 13 + echo -e "${RED}Error: Git working directory is not clean${NC}" 14 + echo "Please commit or stash your changes first" 15 + exit 1 16 + fi 17 + 18 + # Get current version from git tags 19 + CURRENT_VERSION=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0") 20 + 21 + # Remove 'v' prefix if present 22 + CURRENT_VERSION=${CURRENT_VERSION#v} 23 + 24 + # Parse version 25 + IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT_VERSION" 26 + MAJOR="${VERSION_PARTS[0]}" 27 + MINOR="${VERSION_PARTS[1]}" 28 + PATCH="${VERSION_PARTS[2]}" 29 + 30 + # Bump version based on argument 31 + case "$1" in 32 + major) 33 + MAJOR=$((MAJOR + 1)) 34 + MINOR=0 35 + PATCH=0 36 + ;; 37 + minor) 38 + MINOR=$((MINOR + 1)) 39 + PATCH=0 40 + ;; 41 + patch) 42 + PATCH=$((PATCH + 1)) 43 + ;; 44 + *) 45 + echo "Usage: $0 {major|minor|patch}" 46 + exit 1 47 + ;; 48 + esac 49 + 50 + NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}" 51 + 52 + echo -e "${YELLOW}Current version: ${CURRENT_VERSION}${NC}" 53 + echo -e "${GREEN}New version: ${NEW_VERSION}${NC}" 54 + echo "" 55 + 56 + # Confirm 57 + read -p "Create tag ${NEW_VERSION}? (y/N) " -n 1 -r 58 + echo 59 + if [[ ! $REPLY =~ ^[Yy]$ ]]; then 60 + echo "Cancelled" 61 + exit 0 62 + fi 63 + 64 + # Create git tag 65 + git tag -a "${NEW_VERSION}" -m "Release ${NEW_VERSION}" 66 + 67 + echo -e "${GREEN}✓ Created tag ${NEW_VERSION}${NC}" 68 + echo "" 69 + echo "To push the tag, run:" 70 + echo " git push origin ${NEW_VERSION}" 71 + echo "" 72 + echo "Or use 'make release' to push automatically"