|
23 | 23 | import java.util.List;
|
24 | 24 | import java.util.Map;
|
25 | 25 | import java.util.Objects;
|
| 26 | +import java.util.Set; |
26 | 27 |
|
27 | 28 | import org.gradle.api.internal.tasks.userinput.UserInputHandler;
|
28 | 29 |
|
29 | 30 | import org.springframework.boot.build.bom.Library;
|
| 31 | +import org.springframework.boot.build.bom.Library.VersionAlignment; |
| 32 | +import org.springframework.boot.build.bom.bomr.version.DependencyVersion; |
30 | 33 |
|
31 | 34 | /**
|
32 | 35 | * Interactive {@link UpgradeResolver} that uses command line input to choose the upgrades
|
@@ -69,11 +72,23 @@ private Upgrade resolveUpgrade(LibraryWithVersionOptions libraryWithVersionOptio
|
69 | 72 | if (versionOptions.isEmpty()) {
|
70 | 73 | return null;
|
71 | 74 | }
|
72 |
| - VersionOption defaultOption = new VersionOption(library.getVersion().getVersion()); |
| 75 | + VersionOption defaultOption = defaultOption(library); |
73 | 76 | VersionOption selected = selectOption(defaultOption, library, versionOptions);
|
74 | 77 | return (selected.equals(defaultOption)) ? null : new Upgrade(library, selected.getVersion());
|
75 | 78 | }
|
76 | 79 |
|
| 80 | + private VersionOption defaultOption(Library library) { |
| 81 | + VersionAlignment alignment = library.getVersionAlignment(); |
| 82 | + Set<String> alignedVersions = (alignment != null) ? alignment.resolve() : null; |
| 83 | + if (alignedVersions != null && alignedVersions.size() == 1) { |
| 84 | + DependencyVersion alignedVersion = DependencyVersion.parse(alignedVersions.iterator().next()); |
| 85 | + if (alignedVersion.equals(library.getVersion().getVersion())) { |
| 86 | + return new VersionOption.AlignedVersionOption(alignedVersion, alignment); |
| 87 | + } |
| 88 | + } |
| 89 | + return new VersionOption(library.getVersion().getVersion()); |
| 90 | + } |
| 91 | + |
77 | 92 | private VersionOption selectOption(VersionOption defaultOption, Library library,
|
78 | 93 | List<VersionOption> versionOptions) {
|
79 | 94 | VersionOption selected = this.userInputHandler.askUser((questions) -> {
|
|
0 commit comments