Skip to content

Commit 76d2dfe

Browse files
committed
added version bump script
1 parent 40f4a68 commit 76d2dfe

1 file changed

Lines changed: 170 additions & 0 deletions

File tree

scripts/bump-version.sh

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
#!/usr/bin/env bash
2+
set -e
3+
4+
# Colors for output
5+
RED='\033[0;31m'
6+
GREEN='\033[0;32m'
7+
YELLOW='\033[1;33m'
8+
BLUE='\033[0;34m'
9+
NC='\033[0m' # No Color
10+
11+
# Function to show usage
12+
usage() {
13+
echo "Usage: $0 {cli|mcp|vscode|all} {major|minor|patch}"
14+
echo ""
15+
echo "Components:"
16+
echo " cli - Bump CLI version (Cargo.toml workspace)"
17+
echo " mcp - Bump MCP server version (package.json)"
18+
echo " vscode - Bump VS Code extension version (package.json)"
19+
echo " all - Bump all components together"
20+
echo ""
21+
echo "Bump types:"
22+
echo " major - Bump major version (1.0.0 -> 2.0.0)"
23+
echo " minor - Bump minor version (1.0.0 -> 1.1.0)"
24+
echo " patch - Bump patch version (1.0.0 -> 1.0.1)"
25+
exit 1
26+
}
27+
28+
# Function to bump semantic version
29+
bump_version() {
30+
local version=$1
31+
local bump_type=$2
32+
33+
# Parse version
34+
IFS='.' read -r major minor patch <<< "$version"
35+
36+
case "$bump_type" in
37+
major)
38+
major=$((major + 1))
39+
minor=0
40+
patch=0
41+
;;
42+
minor)
43+
minor=$((minor + 1))
44+
patch=0
45+
;;
46+
patch)
47+
patch=$((patch + 1))
48+
;;
49+
esac
50+
51+
echo "${major}.${minor}.${patch}"
52+
}
53+
54+
# Function to get current CLI version
55+
get_cli_version() {
56+
grep '^version = ' Cargo.toml | head -1 | sed 's/version = "\(.*\)"/\1/'
57+
}
58+
59+
# Function to get current package.json version
60+
get_package_version() {
61+
local file=$1
62+
grep '"version":' "$file" | head -1 | sed 's/.*"version": *"\(.*\)".*/\1/'
63+
}
64+
65+
# Function to update CLI version (Cargo.toml)
66+
update_cli_version() {
67+
local new_version=$1
68+
echo -e "${BLUE}Updating CLI to v${new_version}...${NC}"
69+
70+
# Update workspace Cargo.toml
71+
sed -i.bak "s/^version = \".*\"/version = \"${new_version}\"/" Cargo.toml
72+
rm Cargo.toml.bak
73+
74+
# Update Cargo.lock
75+
cargo update -w
76+
77+
echo -e "${GREEN}✓ CLI updated to v${new_version}${NC}"
78+
}
79+
80+
# Function to update MCP version
81+
update_mcp_version() {
82+
local new_version=$1
83+
echo -e "${BLUE}Updating MCP server to v${new_version}...${NC}"
84+
85+
cd renamify-mcp
86+
# Update package.json
87+
sed -i.bak "s/\"version\": \".*\"/\"version\": \"${new_version}\"/" package.json
88+
rm package.json.bak
89+
90+
# Update lockfile
91+
pnpm install
92+
cd ..
93+
94+
echo -e "${GREEN}✓ MCP server updated to v${new_version}${NC}"
95+
}
96+
97+
# Function to update VS Code extension version
98+
update_vscode_version() {
99+
local new_version=$1
100+
echo -e "${BLUE}Updating VS Code extension to v${new_version}...${NC}"
101+
102+
cd renamify-vscode
103+
# Update package.json
104+
sed -i.bak "s/\"version\": \".*\"/\"version\": \"${new_version}\"/" package.json
105+
rm package.json.bak
106+
107+
# Update lockfile
108+
pnpm install
109+
cd ..
110+
111+
echo -e "${GREEN}✓ VS Code extension updated to v${new_version}${NC}"
112+
}
113+
114+
# Check arguments
115+
if [ $# -ne 2 ]; then
116+
usage
117+
fi
118+
119+
COMPONENT=$1
120+
BUMP_TYPE=$2
121+
122+
# Validate bump type
123+
if [[ ! "$BUMP_TYPE" =~ ^(major|minor|patch)$ ]]; then
124+
echo -e "${RED}Error: Invalid bump type: $BUMP_TYPE${NC}"
125+
usage
126+
fi
127+
128+
# Handle components
129+
case "$COMPONENT" in
130+
cli)
131+
current_version=$(get_cli_version)
132+
new_version=$(bump_version "$current_version" "$BUMP_TYPE")
133+
echo -e "${YELLOW}CLI: ${current_version} -> ${new_version}${NC}"
134+
update_cli_version "$new_version"
135+
;;
136+
mcp)
137+
current_version=$(get_package_version "renamify-mcp/package.json")
138+
new_version=$(bump_version "$current_version" "$BUMP_TYPE")
139+
echo -e "${YELLOW}MCP: ${current_version} -> ${new_version}${NC}"
140+
update_mcp_version "$new_version"
141+
;;
142+
vscode)
143+
current_version=$(get_package_version "renamify-vscode/package.json")
144+
new_version=$(bump_version "$current_version" "$BUMP_TYPE")
145+
echo -e "${YELLOW}VS Code: ${current_version} -> ${new_version}${NC}"
146+
update_vscode_version "$new_version"
147+
;;
148+
all)
149+
# For 'all', use the CLI version as the base
150+
current_version=$(get_cli_version)
151+
new_version=$(bump_version "$current_version" "$BUMP_TYPE")
152+
echo -e "${YELLOW}All components: ${current_version} -> ${new_version}${NC}"
153+
update_cli_version "$new_version"
154+
update_mcp_version "$new_version"
155+
update_vscode_version "$new_version"
156+
;;
157+
*)
158+
echo -e "${RED}Error: Invalid component: $COMPONENT${NC}"
159+
usage
160+
;;
161+
esac
162+
163+
echo ""
164+
echo -e "${GREEN}Version bump complete!${NC}"
165+
echo ""
166+
echo "Next steps:"
167+
echo "1. Review the changes: git diff"
168+
echo "2. Commit: git commit -am \"chore: bump $COMPONENT version to v${new_version}\""
169+
echo "3. Tag (if releasing): git tag ${COMPONENT}-v${new_version}"
170+
echo "4. Push: git push && git push --tags"

0 commit comments

Comments
 (0)