Skip to content

Commit 933ada8

Browse files
committed
TEMP: First attempt at fixing the two big bugs
- detect version of to-be-released component - bump deps of that component to next snapshot
1 parent ee5c43a commit 933ada8

File tree

1 file changed

+49
-13
lines changed

1 file changed

+49
-13
lines changed

release-version.sh

Lines changed: 49 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,29 @@ resolve_snapshot_deps() {
5050
read
5151
}
5252

53+
# Update all modules that depend on the released module to use the next snapshot version
54+
update_inter_module_deps() {
55+
released_module=$1
56+
next_snapshot_version=$2
57+
debug "Updating inter-module dependencies on $released_module to $next_snapshot_version"
58+
59+
# Property name pattern: scijava-meta -> scijava-meta.version
60+
property_name="${released_module}.version"
61+
62+
# Find all module POMs that have this property
63+
for module_dir in $(get_modules)
64+
do
65+
module_pom="$module_dir/pom.xml"
66+
if test -f "$module_pom" && grep -q "<${property_name}>" "$module_pom"
67+
then
68+
debug "Updating $property_name in $module_pom to $next_snapshot_version"
69+
sed -i.bak "s|<${property_name}>.*</${property_name}>|<${property_name}>${next_snapshot_version}</${property_name}>|" "$module_pom"
70+
rm -f "$module_pom.bak"
71+
git add "$module_pom"
72+
fi
73+
done
74+
}
75+
5376
# -- Constants and settings --
5477

5578
SCIJAVA_BASE_REPOSITORY=-DaltDeploymentRepository=scijava.releases::default::dav:https://maven.scijava.org/content/repositories
@@ -136,19 +159,12 @@ Options include:
136159
"
137160

138161
# -- Extract project details --
162+
# Note: For multi-module projects, this will be re-extracted after module selection
139163
debug "Extracting project details"
140164

141165
echoArg='${project.version}:${license.licenseName}:${project.parent.groupId}:${project.parent.artifactId}:${project.parent.version}'
142-
143-
if test "$IS_AGGREGATOR"
144-
then
145-
projectDetails=$(mvn -B -N -f "$MODULE_NAME/pom.xml" -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
146-
test $? -eq 0 || projectDetails=$(mvn -B -U -N -f "$MODULE_NAME/pom.xml" -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
147-
else
148-
projectDetails=$(mvn -B -N -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
149-
test $? -eq 0 || projectDetails=$(mvn -B -U -N -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
150-
fi
151-
166+
projectDetails=$(mvn -B -N -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
167+
test $? -eq 0 || projectDetails=$(mvn -B -U -N -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
152168
test $? -eq 0 || die "Could not extract version from pom.xml. Error follows:\n$projectDetails"
153169
printf '%s' "$projectDetails\n" | grep -Fqv '[ERROR]' ||
154170
die "Error extracting version from pom.xml. Error follows:\n$projectDetails"
@@ -263,6 +279,18 @@ then
263279
# Validate module exists
264280
test -d "$MODULE_NAME" || die "Module directory '$MODULE_NAME' not found"
265281
echo "$modules" | grep -qx "$MODULE_NAME" || die "Module '$MODULE_NAME' not found in aggregator POM"
282+
283+
# Re-extract project details from the selected module
284+
debug "Extracting module project details"
285+
projectDetails=$(mvn -B -N -f "$MODULE_NAME/pom.xml" -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
286+
test $? -eq 0 || projectDetails=$(mvn -B -U -N -f "$MODULE_NAME/pom.xml" -Dexec.executable=echo -Dexec.args="$echoArg" exec:exec -q)
287+
test $? -eq 0 || die "Could not extract version from $MODULE_NAME/pom.xml. Error follows:\n$projectDetails"
288+
projectDetails=$(printf '%s' "$projectDetails" | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[mGK]//g")
289+
projectDetails=$(printf '%s' "$projectDetails" | tr -d '\n')
290+
currentVersion=${projectDetails%%:*}
291+
projectDetails=${projectDetails#*:}
292+
licenseName=${projectDetails%%:*}
293+
parentGAV=${projectDetails#*:}
266294
fi
267295

268296
# If REMOTE is unset, use branch's upstream remote by default.
@@ -453,11 +481,19 @@ then
453481
# Revert O to produce R
454482
$DRY_RUN git revert --no-edit HEAD~2 &&
455483

456-
# Now: ...prev → O → A → B → R
457-
# Squash the last 4 commits
484+
# Update inter-module dependencies to use the next snapshot version
485+
# (The revert brought back old snapshot deps, but other modules should use the next snapshot)
486+
if test -z "$DRY_RUN"
487+
then
488+
next_version=$(grep '<version>' "$MODULE_NAME/pom.xml" | head -1 | sed 's/.*<version>\(.*\)<\/version>.*/\1/')
489+
update_inter_module_deps "$MODULE_NAME" "$next_version"
490+
fi &&
491+
492+
# Now: ...prev → O → A → B → R (+ inter-module dep updates)
493+
# Squash the last 4 commits (plus any inter-module dep updates)
458494
$DRY_RUN git reset --soft HEAD~4 &&
459495

460-
# Net changes staged: only module version bump (O+A+B+R = just the version change)
496+
# Net changes staged: module version bump + inter-module deps updated to next snapshot
461497
if ! git diff-index --cached --quiet --ignore-submodules HEAD --
462498
then
463499
if test -z "$DRY_RUN"

0 commit comments

Comments
 (0)