@@ -32,3 +32,78 @@ patch_toml_package_name() {
3232patch_pubspec_version () {
3333 uv run " $SCRIPTS /patch_pubspec_version.py" " $@ "
3434}
35+
36+ get_pyproject_version () {
37+ uv run " $SCRIPTS /get_pyproject_version.py" " $@ "
38+ }
39+
40+ compute_build_versions () {
41+ local RUN_OFFSET=" ${RUN_OFFSET:- 0} "
42+ : " ${GITHUB_RUN_NUMBER:= 0} "
43+
44+ local VERSION PKG_VER BUILD_VER PYPI_VER
45+
46+ _emit () {
47+ # $1..$4: VERSION PKG_VER BUILD_VER PYPI_VER
48+ export VERSION=" $1 " PKG_VER=" $2 " BUILD_VER=" $3 " PYPI_VER=" $4 "
49+
50+ {
51+ echo " VERSION=$VERSION "
52+ echo " PKG_VER=$PKG_VER "
53+ echo " BUILD_VER=$BUILD_VER "
54+ echo " PYPI_VER=$PYPI_VER "
55+ } >> " $GITHUB_ENV "
56+
57+ {
58+ echo " VERSION=$VERSION "
59+ echo " PKG_VER=$PKG_VER "
60+ echo " BUILD_VER=$BUILD_VER "
61+ echo " PYPI_VER=$PYPI_VER "
62+ } | tee -a " $GITHUB_OUTPUT "
63+ }
64+
65+ _next_dev_from () {
66+ # $1: base version (e.g., 1.2.3) → outputs "PKG_VER BUILD_VER PYPI_VER"
67+ local base=" $1 "
68+ local major minor
69+ major=" ${base%% .* } "
70+ minor=" ${base#* .} " ; minor=" ${minor%% .* } "
71+ minor=$(( minor + 1 ))
72+ local pkg=" ${major} .${minor} .0"
73+ local build=" ${pkg} +$(( GITHUB_RUN_NUMBER + RUN_OFFSET)) "
74+ local pypi=" ${build/ +/ .dev} "
75+ printf ' %s %s %s' " $pkg " " $build " " $pypi "
76+ }
77+
78+ # ---------------- pyproject flow ----------------
79+ if [[ -n " ${1-} " ]]; then
80+ local arg=" $1 " pyproject
81+ if [[ " $arg " == * /* || " $arg " == * .toml ]]; then
82+ pyproject=" $arg "
83+ else
84+ pyproject=" ${SDK_PYTHON} /packages/${arg} /pyproject.toml"
85+ fi
86+
87+ VERSION=" $( uv run " $SCRIPTS /get_pyproject_version.py" " $pyproject " ) "
88+ read -r PKG_VER BUILD_VER PYPI_VER < <( _next_dev_from " $VERSION " )
89+ _emit " $VERSION " " $PKG_VER " " $BUILD_VER " " $PYPI_VER "
90+ return
91+ fi
92+
93+ # ---------------- git/tag flow ----------------
94+ if [[ " ${GITHUB_REF:- } " == refs/tags/* ]]; then
95+ VERSION=" ${GITHUB_REF# refs/ tags/ } " ; VERSION=" ${VERSION# v} "
96+ PKG_VER=" $VERSION "
97+ BUILD_VER=" $PKG_VER "
98+ PYPI_VER=" ${BUILD_VER/ +/ .dev} "
99+ _emit " $VERSION " " $PKG_VER " " $BUILD_VER " " $PYPI_VER "
100+ return
101+ fi
102+
103+ # Untagged: base = latest tag (or 0.0.0), then next-dev
104+ local cv
105+ cv=" $( git describe --abbrev=0 2> /dev/null || echo " v0.0.0" ) "
106+ VERSION=" ${cv# v} "
107+ read -r PKG_VER BUILD_VER PYPI_VER < <( _next_dev_from " $VERSION " )
108+ _emit " $VERSION " " $PKG_VER " " $BUILD_VER " " $PYPI_VER "
109+ }
0 commit comments