Skip to content

Commit 4fe7ba6

Browse files
committed
Move CHANGELOG.md and add release script
1 parent b91fd2f commit 4fe7ba6

File tree

2 files changed

+112
-0
lines changed

2 files changed

+112
-0
lines changed
File renamed without changes.
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
#!/bin/bash
2+
3+
# ASON Core Library Release Script
4+
# Usage: ./scripts/release.sh
5+
6+
set -e
7+
8+
# Colors
9+
RED='\033[0;31m'
10+
GREEN='\033[0;32m'
11+
BLUE='\033[0;34m'
12+
YELLOW='\033[1;33m'
13+
NC='\033[0m'
14+
15+
echo -e "${BLUE}╔════════════════════════════════════════╗${NC}"
16+
echo -e "${BLUE}║ ASON Core Library Release Script ║${NC}"
17+
echo -e "${BLUE}╚════════════════════════════════════════╝${NC}"
18+
echo ""
19+
20+
# Get current version
21+
CURRENT_VERSION=$(node -p "require('./package.json').version")
22+
echo -e "Current version: ${YELLOW}v${CURRENT_VERSION}${NC}"
23+
24+
# Select version bump type
25+
echo ""
26+
echo -e "${GREEN}Select version bump:${NC}"
27+
echo " 1) patch - Bug fixes (${CURRENT_VERSION}$(npm version patch --no-git-tag-version | tail -1 && npm version ${CURRENT_VERSION} --no-git-tag-version >/dev/null 2>&1))"
28+
echo " 2) minor - New features (${CURRENT_VERSION}$(npm version minor --no-git-tag-version | tail -1 && npm version ${CURRENT_VERSION} --no-git-tag-version >/dev/null 2>&1))"
29+
echo " 3) major - Breaking changes (${CURRENT_VERSION}$(npm version major --no-git-tag-version | tail -1 && npm version ${CURRENT_VERSION} --no-git-tag-version >/dev/null 2>&1))"
30+
echo ""
31+
read -p "Enter choice (1-3): " BUMP_CHOICE
32+
33+
case $BUMP_CHOICE in
34+
1) BUMP_TYPE="patch" ;;
35+
2) BUMP_TYPE="minor" ;;
36+
3) BUMP_TYPE="major" ;;
37+
*)
38+
echo -e "${RED}Invalid choice${NC}"
39+
exit 1
40+
;;
41+
esac
42+
43+
# Bump version
44+
echo ""
45+
echo -e "${BLUE}Bumping version...${NC}"
46+
NEW_VERSION=$(npm version $BUMP_TYPE --no-git-tag-version)
47+
NEW_VERSION=${NEW_VERSION#v}
48+
49+
echo -e "New version: ${GREEN}v${NEW_VERSION}${NC}"
50+
echo ""
51+
52+
# Update CHANGELOG
53+
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
54+
echo -e "${YELLOW}IMPORTANT: Update CHANGELOG.md${NC}"
55+
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
56+
echo ""
57+
echo "Change from:"
58+
echo -e " ${RED}## [Unreleased]${NC}"
59+
echo ""
60+
echo "To:"
61+
echo -e " ${GREEN}## [${NEW_VERSION}] - $(date +%Y-%m-%d)${NC}"
62+
echo ""
63+
read -p "Press ENTER when you've updated CHANGELOG.md..."
64+
65+
# Build
66+
echo ""
67+
echo -e "${BLUE}Building package...${NC}"
68+
npm run build
69+
70+
# Run tests
71+
echo ""
72+
echo -e "${BLUE}Running tests...${NC}"
73+
npm test || {
74+
echo -e "${RED}Tests failed!${NC}"
75+
read -p "Continue anyway? (y/N): " -n 1 -r
76+
echo
77+
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
78+
exit 1
79+
fi
80+
}
81+
82+
# Commit and tag
83+
git add package.json CHANGELOG.md package-lock.json 2>/dev/null || true
84+
git commit -m "Release v${NEW_VERSION}"
85+
86+
TAG_NAME="v${NEW_VERSION}"
87+
git tag -a "$TAG_NAME" -m "Release v${NEW_VERSION}"
88+
89+
echo ""
90+
echo -e "${GREEN}✓ Tag created: ${TAG_NAME}${NC}"
91+
echo ""
92+
93+
# Push
94+
read -p "Push changes and tag to remote? (y/N): " -n 1 -r
95+
echo
96+
if [[ $REPLY =~ ^[Yy]$ ]]; then
97+
git push origin main
98+
git push origin "$TAG_NAME"
99+
100+
echo ""
101+
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
102+
echo -e "${GREEN}✓ Release completed!${NC}"
103+
echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
104+
echo ""
105+
echo -e "Version: ${GREEN}v${NEW_VERSION}${NC}"
106+
echo -e "Tag: ${YELLOW}${TAG_NAME}${NC}"
107+
echo ""
108+
echo -e "${BLUE}Next steps:${NC}"
109+
echo " → GitHub Actions will publish to NPM"
110+
echo " → GitHub Release will be created automatically"
111+
echo ""
112+
fi

0 commit comments

Comments
 (0)