1616
1717package org .springframework .gradle .sagan ;
1818
19+ import java .util .regex .Matcher ;
20+ import java .util .regex .Pattern ;
21+
22+ import org .eclipse .core .runtime .Assert ;
1923import org .gradle .api .DefaultTask ;
2024import org .gradle .api .tasks .Input ;
2125import org .gradle .api .tasks .TaskAction ;
2529
2630public class SaganCreateReleaseTask extends DefaultTask {
2731
32+ private static final Pattern VERSION_PATTERN = Pattern .compile ("^([0-9]+)\\ .([0-9]+)\\ .([0-9]+)(-.+)?$" );
33+
2834 @ Input
2935 private String gitHubAccessToken ;
3036 @ Input
@@ -44,9 +50,12 @@ public void saganCreateRelease() {
4450 // Antora reference docs URLs for snapshots do not contain -SNAPSHOT
4551 String referenceDocUrl = this .referenceDocUrl ;
4652 if (this .version .endsWith ("-SNAPSHOT" )) {
47- referenceDocUrl = this .referenceDocUrl
48- .replace ("{version}" , this .version )
49- .replace ("-SNAPSHOT" , "" );
53+ Matcher versionMatcher = VERSION_PATTERN .matcher (this .version );
54+ Assert .isTrue (versionMatcher .matches (), "Version " + this .version + " does not match expected pattern" );
55+ var majorVersion = versionMatcher .group (1 );
56+ var minorVersion = versionMatcher .group (2 );
57+ var majorMinorVersion = "%s.%s-SNAPSHOT" .formatted (majorVersion , minorVersion );
58+ referenceDocUrl = this .referenceDocUrl .replace ("{version}" , majorMinorVersion );
5059 }
5160
5261 SaganApi sagan = new SaganApi (user .getLogin (), this .gitHubAccessToken );
0 commit comments