-
Notifications
You must be signed in to change notification settings - Fork 24.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added migration/index.asciidoc generation support
- Loading branch information
1 parent
b0cea2e
commit 51a3fe0
Showing
6 changed files
with
190 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
46 changes: 46 additions & 0 deletions
46
...ternal/src/main/java/org/elasticsearch/gradle/internal/release/MigrateIndexGenerator.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0 and the Server Side Public License, v 1; you may not use this file except | ||
* in compliance with, at your election, the Elastic License 2.0 or the Server | ||
* Side Public License, v 1. | ||
*/ | ||
|
||
package org.elasticsearch.gradle.internal.release; | ||
|
||
import com.google.common.annotations.VisibleForTesting; | ||
|
||
import java.io.File; | ||
import java.io.FileWriter; | ||
import java.io.IOException; | ||
import java.nio.file.Files; | ||
import java.util.*; | ||
import java.util.stream.Collectors; | ||
|
||
import static java.util.Comparator.reverseOrder; | ||
|
||
/** | ||
* This class ensures that the migrate/index page has the appropriate anchors and include directives | ||
* for the current repository version. | ||
*/ | ||
public class MigrateIndexGenerator { | ||
|
||
static void update(Set<MinorVersion> versions, File indexTemplate, File indexFile) throws IOException { | ||
try (FileWriter indexFileWriter = new FileWriter(indexFile)) { | ||
indexFileWriter.write(generateFile(versions, Files.readString(indexTemplate.toPath()))); | ||
} | ||
} | ||
|
||
@VisibleForTesting | ||
static String generateFile(Set<MinorVersion> versionsSet, String template) throws IOException { | ||
final Set<MinorVersion> versions = new TreeSet<>(reverseOrder()); | ||
versions.addAll(versionsSet); | ||
final List<String> includeVersions = versions.stream().map(MinorVersion::underscore).collect(Collectors.toList()); | ||
|
||
final Map<String, Object> bindings = new HashMap<>(); | ||
bindings.put("versions", versions); | ||
bindings.put("includeVersions", includeVersions); | ||
|
||
return TemplateUtils.render(template, bindings); | ||
} | ||
} |
48 changes: 48 additions & 0 deletions
48
...-tools-internal/src/main/java/org/elasticsearch/gradle/internal/release/MinorVersion.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
/* | ||
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one | ||
* or more contributor license agreements. Licensed under the Elastic License | ||
* 2.0 and the Server Side Public License, v 1; you may not use this file except | ||
* in compliance with, at your election, the Elastic License 2.0 or the Server | ||
* Side Public License, v 1. | ||
*/ | ||
|
||
package org.elasticsearch.gradle.internal.release; | ||
|
||
import java.util.Comparator; | ||
import java.util.Locale; | ||
import java.util.Objects; | ||
|
||
/** | ||
* Encapsulates comparison and printing logic for an x.y. | ||
*/ | ||
public record MinorVersion(int major, int minor) implements Comparable<MinorVersion> { | ||
/** | ||
* Converts a QualifiedVersion into a MinorVersion by deleting all but the major and minor components. | ||
*/ | ||
public static MinorVersion of(final QualifiedVersion v) { | ||
Objects.requireNonNull(v); | ||
return new MinorVersion(v.major(), v.minor()); | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return String.format(Locale.ROOT, "%d.%d", major, minor); | ||
} | ||
|
||
/** Generate version string with underscore instead of dot */ | ||
public String underscore() { | ||
return String.format(Locale.ROOT, "%d_%d", major, minor); | ||
} | ||
|
||
private static final Comparator<MinorVersion> COMPARATOR = Comparator.comparing((MinorVersion v) -> v.major) | ||
.thenComparing(v -> v.minor); | ||
|
||
@Override | ||
public int compareTo(MinorVersion other) { | ||
return COMPARATOR.compare(this, other); | ||
} | ||
|
||
public boolean isBefore(MinorVersion other) { | ||
return this.compareTo(other) < 0; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
build-tools-internal/src/main/resources/templates/migration-index.asciidoc
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
[[breaking-changes]] | ||
= Migration guide | ||
|
||
This section discusses the changes that you need to be aware of to migrate | ||
your application to {version}. For more information about what's new in this | ||
release, see the <<release-highlights>> and <<es-release-notes>>. | ||
|
||
As {es} introduces new features and improves existing ones, the changes | ||
sometimes make older settings, APIs, and parameters obsolete. We typically | ||
deprecate obsolete functionality as part of a release. If possible, we support | ||
the deprecated functionality for several subsequent releases before removing it. | ||
This enables applications to continue working unchanged while you prepare to | ||
migrate away from the deprecated functionality. | ||
|
||
To get the most out of {es} and facilitate future upgrades, we strongly | ||
encourage migrating away from using deprecated functionality as soon as | ||
possible. | ||
|
||
To give you insight into what deprecated features you're using, {es}: | ||
|
||
- Returns a `Warn` HTTP header whenever you | ||
submit a request that uses deprecated functionality. | ||
- <<deprecation-logging, Logs deprecation warnings>> when | ||
deprecated functionality is used. | ||
- <<migration-api-deprecation, Provides a deprecation info API>> | ||
that scans a cluster's configuration | ||
and mappings for deprecated functionality. | ||
|
||
For more information about {minor-version}, | ||
see the <<release-highlights>> and <<es-release-notes>>. | ||
For information about how to upgrade your cluster, see <<setup-upgrade>>. | ||
|
||
<% versions.each { print "* <<migrating-${ it },Migrating to ${ it }>>\n" } %> | ||
|
||
<% includeVersions.each { print "include::migrate_${ it }.asciidoc[]\n" } %> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters