@@ -157,6 +157,14 @@ tasks:
157157 - rm -f /tmp/recent-prs.json /tmp/changelog-content.md /tmp/plugin-changes.html
158158 - echo "✅ Temporary files cleaned"
159159
160+ version :
161+ desc : Show current plugin version
162+ vars :
163+ CURRENT_VERSION :
164+ sh : grep -E '^version\s*=' build.gradle.kts | head -n1 | sed 's/.*"\(.*\)".*/\1/'
165+ cmds :
166+ - echo "DevoxxGenie plugin version {{.CURRENT_VERSION}}"
167+
160168 build :
161169 desc : Build the plugin using Gradle
162170 cmds :
@@ -207,6 +215,111 @@ tasks:
207215 - build
208216 - test
209217
218+ release:patch :
219+ desc : 📦 Release a patch version (e.g. 0.5.6 → 0.5.7)
220+ summary : |
221+ Bumps the patch version in build.gradle.kts, generates changelog, creates a git tag, and pushes to remote.
222+ preconditions :
223+ - sh : git diff-index --quiet HEAD --
224+ msg : " You have uncommitted changes. Please commit or stash them before releasing."
225+ vars :
226+ CURRENT_VERSION :
227+ sh : grep -E '^version\s*=' build.gradle.kts | head -n1 | sed 's/.*"\(.*\)".*/\1/'
228+ NEW_VERSION :
229+ sh : |
230+ current="{{.CURRENT_VERSION}}"
231+ major=$(echo "$current" | cut -d'.' -f1)
232+ minor=$(echo "$current" | cut -d'.' -f2)
233+ patch=$(echo "$current" | cut -d'.' -f3)
234+ new_patch=$((patch + 1))
235+ echo "$major.$minor.$new_patch"
236+ prompt : " Release patch version {{.NEW_VERSION}}? (current: {{.CURRENT_VERSION}})"
237+ deps :
238+ - check-tools
239+ cmds :
240+ - task : test
241+ - |
242+ sed -i.bak -E 's/^(version[[:space:]]*=[[:space:]]*")[^"]+(".*)$/\1{{.NEW_VERSION}}\2/' build.gradle.kts
243+ rm -f build.gradle.kts.bak
244+ echo "✅ Updated build.gradle.kts to version {{.NEW_VERSION}}"
245+ - task : generate-changelog
246+ vars : {VERSION: "{{.NEW_VERSION}}"}
247+ - git add build.gradle.kts CHANGELOG.md {{.PLUGIN_XML}}
248+ - ' git commit -m "chore(release): prepare release v{{.NEW_VERSION}}"'
249+ - ' git tag -a "v{{.NEW_VERSION}}" -m "Release v{{.NEW_VERSION}}"'
250+ - git push origin HEAD
251+ - ' git push origin "v{{.NEW_VERSION}}"'
252+ - echo "✅ Released v{{.NEW_VERSION}}"
253+
254+ release:minor :
255+ desc : 📦 Release a minor version (e.g. 0.5.6 → 0.6.0)
256+ summary : |
257+ Bumps the minor version in build.gradle.kts, generates changelog, creates a git tag, and pushes to remote.
258+ preconditions :
259+ - sh : git diff-index --quiet HEAD --
260+ msg : " You have uncommitted changes. Please commit or stash them before releasing."
261+ vars :
262+ CURRENT_VERSION :
263+ sh : grep -E '^version\s*=' build.gradle.kts | head -n1 | sed 's/.*"\(.*\)".*/\1/'
264+ NEW_VERSION :
265+ sh : |
266+ current="{{.CURRENT_VERSION}}"
267+ major=$(echo "$current" | cut -d'.' -f1)
268+ minor=$(echo "$current" | cut -d'.' -f2)
269+ new_minor=$((minor + 1))
270+ echo "$major.$new_minor.0"
271+ prompt : " Release minor version {{.NEW_VERSION}}? (current: {{.CURRENT_VERSION}})"
272+ deps :
273+ - check-tools
274+ cmds :
275+ - task : test
276+ - |
277+ sed -i.bak -E 's/^(version[[:space:]]*=[[:space:]]*")[^"]+(".*)$/\1{{.NEW_VERSION}}\2/' build.gradle.kts
278+ rm -f build.gradle.kts.bak
279+ echo "✅ Updated build.gradle.kts to version {{.NEW_VERSION}}"
280+ - task : generate-changelog
281+ vars : {VERSION: "{{.NEW_VERSION}}"}
282+ - git add build.gradle.kts CHANGELOG.md {{.PLUGIN_XML}}
283+ - ' git commit -m "chore(release): prepare release v{{.NEW_VERSION}}"'
284+ - ' git tag -a "v{{.NEW_VERSION}}" -m "Release v{{.NEW_VERSION}}"'
285+ - git push origin HEAD
286+ - ' git push origin "v{{.NEW_VERSION}}"'
287+ - echo "✅ Released v{{.NEW_VERSION}}"
288+
289+ release:major :
290+ desc : 📦 Release a major version (e.g. 0.5.6 → 1.0.0)
291+ summary : |
292+ Bumps the major version in build.gradle.kts, generates changelog, creates a git tag, and pushes to remote.
293+ preconditions :
294+ - sh : git diff-index --quiet HEAD --
295+ msg : " You have uncommitted changes. Please commit or stash them before releasing."
296+ vars :
297+ CURRENT_VERSION :
298+ sh : grep -E '^version\s*=' build.gradle.kts | head -n1 | sed 's/.*"\(.*\)".*/\1/'
299+ NEW_VERSION :
300+ sh : |
301+ current="{{.CURRENT_VERSION}}"
302+ major=$(echo "$current" | cut -d'.' -f1)
303+ new_major=$((major + 1))
304+ echo "$new_major.0.0"
305+ prompt : " Release major version {{.NEW_VERSION}}? (current: {{.CURRENT_VERSION}})"
306+ deps :
307+ - check-tools
308+ cmds :
309+ - task : test
310+ - |
311+ sed -i.bak -E 's/^(version[[:space:]]*=[[:space:]]*")[^"]+(".*)$/\1{{.NEW_VERSION}}\2/' build.gradle.kts
312+ rm -f build.gradle.kts.bak
313+ echo "✅ Updated build.gradle.kts to version {{.NEW_VERSION}}"
314+ - task : generate-changelog
315+ vars : {VERSION: "{{.NEW_VERSION}}"}
316+ - git add build.gradle.kts CHANGELOG.md {{.PLUGIN_XML}}
317+ - ' git commit -m "chore(release): prepare release v{{.NEW_VERSION}}"'
318+ - ' git tag -a "v{{.NEW_VERSION}}" -m "Release v{{.NEW_VERSION}}"'
319+ - git push origin HEAD
320+ - ' git push origin "v{{.NEW_VERSION}}"'
321+ - echo "✅ Released v{{.NEW_VERSION}}"
322+
210323 preview-changes :
211324 desc : Preview what changes would be made without updating files
212325 summary : |
@@ -253,14 +366,19 @@ tasks:
253366 preview-changes - Preview changes without updating files
254367 clean-temp - Clean temporary files
255368
369+ 📦 Release Tasks:
370+ release:major - Release a major version (e.g. 0.5.6 → 1.0.0)
371+ release:minor - Release a minor version (e.g. 0.5.6 → 0.6.0)
372+ release:patch - Release a patch version (e.g. 0.5.6 → 0.5.7)
373+
256374 Examples:
257375 # Development
258376 task build
259377 task test
260378 task run-ide
261379
262380 # Release
263- task generate-changelog VERSION=0.8.0
381+ task release:patch
264382 task verify
265383 PUBLISH_TOKEN=xxx task publish
266384
0 commit comments