11#! /bin/bash
22# Auto-increment patch version on every commit (unless [skip-version])
3- # Only updates VERSION files + lpb. stack.env LPB_PI_REF
3+ # Increments VERSION across all stack repos and auto-commits with [skip-version]
44# Does NOT touch package.json versions (kept at original fork versions)
55
66COMMIT_MSG_FILE=" $1 "
77COMMIT_MSG=$( cat " $COMMIT_MSG_FILE " )
8- if echo " $COMMIT_MSG " | grep -q ' \[skip-version\]' ; then exit 0; fi
8+
9+ # [skip-version] → no bump, just pass through
10+ if echo " $COMMIT_MSG " | grep -q ' \[skip-version\]' ; then
11+ exit 0
12+ fi
913
1014# Find devstack dir by searching upward from the git working tree
1115DEVSTACK_DIR=" $( git rev-parse --show-toplevel 2> /dev/null) "
@@ -19,21 +23,51 @@ PATCH=$(echo "$VERSION" | sed 's/^[0-9]*\.[0-9]*\.\([0-9]*\).*/\1/')
1923NEW_PATCH=$(( PATCH + 1 ))
2024NEW_VERSION=" 0.0.${NEW_PATCH}${BASE} "
2125
22- echo " $NEW_VERSION " > " $DEVSTACK_DIR /VERSION"
23-
2426# Update VERSION in all stack repos
25- declare -a REPOS=(
27+ REPOS=(
2628 " $DEVSTACK_DIR /workspace/pi"
2729 " /home/lpb/.pi/agent/git/github.com/localpibox/lemonade-pi-plugin"
2830 " /home/lpb/workspace/localpibox/config"
2931 " /home/lpb/workspace/localpibox/lpb-memory"
3032 " /home/lpb/.pi/agent/git/github.com/localpibox/pi-subagents"
3133)
34+
35+ echo " "
36+ echo " === Auto-bump VERSION ==="
37+ echo " $VERSION → $NEW_VERSION "
38+
39+ echo " $NEW_VERSION " > " $DEVSTACK_DIR /VERSION"
40+
3241for repo in " ${REPOS[@]} " ; do
3342 [ -f " $repo /VERSION" ] && echo " $NEW_VERSION " > " $repo /VERSION"
3443done
3544
3645# Update lpb.stack.env
37- [ -f " $DEVSTACK_DIR /lpb.stack.env" ] && sed -i " s/^LPB_PI_REF=.*/LPB_PI_REF=$NEW_VERSION /" " $DEVSTACK_DIR /lpb.stack.env"
46+ if [ -f " $DEVSTACK_DIR /lpb.stack.env" ]; then
47+ sed -i " s/^LPB_PI_REF=.*/LPB_PI_REF=$NEW_VERSION /" " $DEVSTACK_DIR /lpb.stack.env"
48+ fi
49+
50+ # Auto-commit VERSION in each repo (with [skip-version] to avoid infinite loop)
51+ for repo in " ${REPOS[@]} " ; do
52+ repo_name=$( basename " $repo " )
53+ [ -d " $repo " ] || continue
54+ [ -f " $repo /VERSION" ] || continue
55+ # Stage and commit if VERSION is the only staged change
56+ (cd " $repo " && git add VERSION 2> /dev/null)
57+ staged=$( cd " $repo " && git diff --cached --name-only 2> /dev/null)
58+ if [ " $staged " = " VERSION" ]; then
59+ (cd " $repo " && git commit -m " chore: bump VERSION $NEW_VERSION [skip-version]" --no-verify 2> /dev/null) && \
60+ echo " ✅ $repo_name : $NEW_VERSION " || \
61+ echo " ⚠️ $repo_name : version updated on disk, not committed"
62+ fi
63+ done
64+
65+ # Auto-commit VERSION in devstack
66+ (cd " $DEVSTACK_DIR " && git add VERSION lpb.stack.env 2> /dev/null)
67+ staged=$( cd " $DEVSTACK_DIR " && git diff --cached --name-only 2> /dev/null)
68+ if echo " $staged " | grep -q " VERSION" ; then
69+ (cd " $DEVSTACK_DIR " && git commit -m " chore: bump VERSION $NEW_VERSION [skip-version]" --no-verify 2> /dev/null) && \
70+ echo " ✅ devstack: $NEW_VERSION "
71+ fi
3872
3973exit 0
0 commit comments