16
16
17
17
package org .springframework .gradle .sagan ;
18
18
19
+ import java .util .regex .Matcher ;
20
+ import java .util .regex .Pattern ;
21
+
22
+ import org .eclipse .core .runtime .Assert ;
19
23
import org .gradle .api .DefaultTask ;
20
24
import org .gradle .api .tasks .Input ;
21
25
import org .gradle .api .tasks .TaskAction ;
25
29
26
30
public class SaganCreateReleaseTask extends DefaultTask {
27
31
32
+ private static final Pattern VERSION_PATTERN = Pattern .compile ("^([0-9]+)\\ .([0-9]+)\\ .([0-9]+)(-.+)?$" );
33
+
28
34
@ Input
29
35
private String gitHubAccessToken ;
30
36
@ Input
@@ -44,9 +50,12 @@ public void saganCreateRelease() {
44
50
// Antora reference docs URLs for snapshots do not contain -SNAPSHOT
45
51
String referenceDocUrl = this .referenceDocUrl ;
46
52
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 );
50
59
}
51
60
52
61
SaganApi sagan = new SaganApi (user .getLogin (), this .gitHubAccessToken );
0 commit comments