tangled
alpha
login
or
join now
atscan.net
/
plcbundle-go
1
fork
atom
[DEPRECATED] Go implementation of plcbundle
1
fork
atom
overview
issues
pulls
pipelines
update bump script
tree.fail
4 months ago
3cfb4f58
116bae12
+142
-12
1 changed file
expand all
collapse all
unified
split
scripts
bump-version.sh
+142
-12
scripts/bump-version.sh
···
6
6
RED='\033[0;31m'
7
7
GREEN='\033[0;32m'
8
8
YELLOW='\033[1;33m'
9
9
+
BLUE='\033[0;34m'
9
10
NC='\033[0m' # No Color
10
11
11
12
# Check if git is clean
···
21
22
# Remove 'v' prefix if present
22
23
CURRENT_VERSION=${CURRENT_VERSION#v}
23
24
24
24
-
# Parse version
25
25
-
IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT_VERSION"
26
26
-
MAJOR="${VERSION_PARTS[0]}"
27
27
-
MINOR="${VERSION_PARTS[1]}"
28
28
-
PATCH="${VERSION_PARTS[2]}"
25
25
+
# Parse version (supports semver with pre-release)
26
26
+
# Format: MAJOR.MINOR.PATCH[-PRERELEASE]
27
27
+
if [[ $CURRENT_VERSION =~ ^([0-9]+)\.([0-9]+)\.([0-9]+)(-([a-zA-Z]+)\.?([0-9]+)?)?$ ]]; then
28
28
+
MAJOR="${BASH_REMATCH[1]}"
29
29
+
MINOR="${BASH_REMATCH[2]}"
30
30
+
PATCH="${BASH_REMATCH[3]}"
31
31
+
PRERELEASE="${BASH_REMATCH[5]}" # alpha, beta, rc, etc.
32
32
+
PRERELEASE_NUM="${BASH_REMATCH[6]}" # 1, 2, 3, etc.
33
33
+
else
34
34
+
echo -e "${RED}Error: Could not parse version: ${CURRENT_VERSION}${NC}"
35
35
+
exit 1
36
36
+
fi
37
37
+
38
38
+
# Function to show usage
39
39
+
show_usage() {
40
40
+
echo "Usage: $0 {major|minor|patch|alpha|beta|rc|pre|release} [--minor|--patch]"
41
41
+
echo ""
42
42
+
echo "Stable releases:"
43
43
+
echo " major Bump major version (x.0.0)"
44
44
+
echo " minor Bump minor version (0.x.0)"
45
45
+
echo " patch Bump patch version (0.0.x)"
46
46
+
echo ""
47
47
+
echo "Pre-releases:"
48
48
+
echo " alpha Create/bump alpha (0.x.0-alpha.1 by default)"
49
49
+
echo " beta Create/bump beta (0.x.0-beta.1 by default)"
50
50
+
echo " rc Create/bump RC (0.x.0-rc.1 by default)"
51
51
+
echo " pre Bump current pre-release number"
52
52
+
echo ""
53
53
+
echo "Combined (create pre-release with specific bump):"
54
54
+
echo " alpha --minor Bump minor and create alpha (0.x.0-alpha.1)"
55
55
+
echo " alpha --patch Bump patch and create alpha (0.0.x-alpha.1)"
56
56
+
echo " beta --minor Bump minor and create beta"
57
57
+
echo " rc --patch Bump patch and create rc"
58
58
+
echo ""
59
59
+
echo "Promotion:"
60
60
+
echo " release Remove pre-release suffix (promote to stable)"
61
61
+
echo ""
62
62
+
echo "Examples:"
63
63
+
echo " v0.4.26 → minor → v0.5.0"
64
64
+
echo " v0.4.26 → alpha --minor → v0.5.0-alpha.1"
65
65
+
echo " v0.4.26 → alpha --patch → v0.4.27-alpha.1"
66
66
+
echo " v0.5.0-alpha.1 → pre → v0.5.0-alpha.2"
67
67
+
echo " v0.5.0-alpha.2 → beta → v0.5.0-beta.1"
68
68
+
echo " v0.5.0-rc.1 → release → v0.5.0"
69
69
+
exit 1
70
70
+
}
29
71
30
30
-
# Bump version based on argument
72
72
+
# Parse optional flags (--minor, --patch)
73
73
+
BUMP_TYPE=""
74
74
+
if [[ "$2" == "--minor" ]]; then
75
75
+
BUMP_TYPE="minor"
76
76
+
elif [[ "$2" == "--patch" ]]; then
77
77
+
BUMP_TYPE="patch"
78
78
+
fi
79
79
+
80
80
+
# Determine new version based on command
31
81
case "$1" in
32
82
major)
33
83
MAJOR=$((MAJOR + 1))
34
84
MINOR=0
35
85
PATCH=0
86
86
+
PRERELEASE=""
87
87
+
PRERELEASE_NUM=""
36
88
;;
37
89
minor)
38
90
MINOR=$((MINOR + 1))
39
91
PATCH=0
92
92
+
PRERELEASE=""
93
93
+
PRERELEASE_NUM=""
40
94
;;
41
95
patch)
42
96
PATCH=$((PATCH + 1))
97
97
+
PRERELEASE=""
98
98
+
PRERELEASE_NUM=""
99
99
+
;;
100
100
+
alpha|beta|rc)
101
101
+
# If already on this pre-release type, bump the number
102
102
+
if [[ "$PRERELEASE" == "$1" ]]; then
103
103
+
PRERELEASE_NUM=$((PRERELEASE_NUM + 1))
104
104
+
else
105
105
+
# Creating new pre-release type
106
106
+
if [[ -z "$PRERELEASE" ]]; then
107
107
+
# Coming from stable - determine what to bump
108
108
+
if [[ "$BUMP_TYPE" == "minor" ]]; then
109
109
+
MINOR=$((MINOR + 1))
110
110
+
PATCH=0
111
111
+
elif [[ "$BUMP_TYPE" == "patch" ]]; then
112
112
+
PATCH=$((PATCH + 1))
113
113
+
else
114
114
+
# Default: bump minor for new pre-release
115
115
+
MINOR=$((MINOR + 1))
116
116
+
PATCH=0
117
117
+
fi
118
118
+
fi
119
119
+
# Set new pre-release
120
120
+
PRERELEASE="$1"
121
121
+
PRERELEASE_NUM=1
122
122
+
fi
123
123
+
;;
124
124
+
pre|prerelease)
125
125
+
if [[ -z "$PRERELEASE" ]]; then
126
126
+
echo -e "${RED}Error: Not currently on a pre-release version${NC}"
127
127
+
echo "Current version: ${CURRENT_VERSION}"
128
128
+
echo "Use 'alpha', 'beta', or 'rc' to create a pre-release"
129
129
+
exit 1
130
130
+
fi
131
131
+
PRERELEASE_NUM=$((PRERELEASE_NUM + 1))
132
132
+
;;
133
133
+
release|stable)
134
134
+
if [[ -z "$PRERELEASE" ]]; then
135
135
+
echo -e "${YELLOW}Already on stable version: ${CURRENT_VERSION}${NC}"
136
136
+
exit 0
137
137
+
fi
138
138
+
# Remove pre-release suffix
139
139
+
PRERELEASE=""
140
140
+
PRERELEASE_NUM=""
141
141
+
;;
142
142
+
-h|--help|help)
143
143
+
show_usage
144
144
+
;;
145
145
+
"")
146
146
+
echo -e "${RED}Error: No command specified${NC}"
147
147
+
echo ""
148
148
+
show_usage
43
149
;;
44
150
*)
45
45
-
echo "Usage: $0 {major|minor|patch}"
46
46
-
exit 1
151
151
+
echo -e "${RED}Error: Invalid command: $1${NC}"
152
152
+
echo ""
153
153
+
show_usage
47
154
;;
48
155
esac
49
156
50
50
-
NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}"
157
157
+
# Build new version string
158
158
+
if [[ -z "$PRERELEASE" ]]; then
159
159
+
NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}"
160
160
+
else
161
161
+
NEW_VERSION="v${MAJOR}.${MINOR}.${PATCH}-${PRERELEASE}.${PRERELEASE_NUM}"
162
162
+
fi
51
163
164
164
+
# Show version change
165
165
+
echo ""
52
166
echo -e "${YELLOW}Current version: ${CURRENT_VERSION}${NC}"
53
53
-
echo -e "${GREEN}New version: ${NEW_VERSION}${NC}"
167
167
+
echo -e "${GREEN}New version: ${NEW_VERSION#v}${NC}"
168
168
+
169
169
+
# Show what changed
170
170
+
if [[ -n "$PRERELEASE" ]]; then
171
171
+
echo -e "${BLUE}Pre-release: ${PRERELEASE}.${PRERELEASE_NUM}${NC}"
172
172
+
echo -e "${YELLOW}⚠️ This is a pre-release (no stability guarantees)${NC}"
173
173
+
else
174
174
+
echo -e "${GREEN}✓ Stable release${NC}"
175
175
+
fi
176
176
+
54
177
echo ""
55
178
56
179
# Confirm
···
62
185
fi
63
186
64
187
# Create git tag
65
65
-
git tag -a "${NEW_VERSION}" -m "Release ${NEW_VERSION}"
188
188
+
if [[ -n "$PRERELEASE" ]]; then
189
189
+
# Pre-release tag
190
190
+
git tag -a "${NEW_VERSION}" -m "Pre-release ${NEW_VERSION}"
191
191
+
echo -e "${GREEN}✓ Created pre-release tag ${NEW_VERSION}${NC}"
192
192
+
else
193
193
+
# Stable release tag
194
194
+
git tag -a "${NEW_VERSION}" -m "Release ${NEW_VERSION}"
195
195
+
echo -e "${GREEN}✓ Created release tag ${NEW_VERSION}${NC}"
196
196
+
fi
66
197
67
67
-
echo -e "${GREEN}✓ Created tag ${NEW_VERSION}${NC}"
68
198
echo ""
69
199
echo "To push the tag, run:"
70
200
echo " git push origin ${NEW_VERSION}"