Skip to content

Commit

Permalink
Introduce version check in base codestarts and use them
Browse files Browse the repository at this point in the history
  • Loading branch information
ia3andy committed Jun 14, 2024
1 parent 59bad99 commit a9b0a74
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@
<goal>build</goal>
<goal>generate-code</goal>
<goal>generate-code-tests</goal>
{#if generate-native}
{#if generate-native and quarkus.platform.version.compareVersionTo("3.12") >= 0}
<goal>native-image-agent</goal>
{/if}
</goals>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,23 @@
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.CompletionStage;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.io.FilenameUtils;

import io.quarkus.devtools.codestarts.CodestartException;
import io.quarkus.devtools.codestarts.CodestartResource;
import io.quarkus.devtools.codestarts.CodestartResource.Source;
import io.quarkus.qute.CompletedStage;
import io.quarkus.qute.Engine;
import io.quarkus.qute.EvalContext;
import io.quarkus.qute.Expression;
import io.quarkus.qute.ResultMapper;
import io.quarkus.qute.Results;
import io.quarkus.qute.TemplateException;
import io.quarkus.qute.TemplateLocator;
import io.quarkus.qute.TemplateNode;
import io.quarkus.qute.ValueResolver;
import io.quarkus.qute.Variant;
import io.quarkus.qute.*;

final class QuteCodestartFileReader implements CodestartFileReader {

private static final String TPL_QUTE_FLAG = ".tpl.qute";
private static final String ENTRY_QUTE_FLAG = ".entry.qute";
public static final String INCLUDE_QUTE_FLAG = ".include.qute";
public static final String SKIP_TAG = "<SKIP>";
private static final Pattern VERSION_PATTERN = Pattern.compile("^((\\d+)\\.(\\d+)).*");

@Override
public boolean matches(String fileName) {
Expand Down Expand Up @@ -187,9 +180,37 @@ public CompletionStage<Object> resolve(EvalContext context) {
return CompletedStage.of(value.endsWith((String) e));
});
}

case "compareVersionTo":
if (context.getParams().size() == 1) {
return context.evaluate(context.getParams().get(0)).thenCompose(e -> {
return CompletedStage.of(compareVersionTo(value, (String) e));
});
}
default:
return Results.notFound(context);
}
}
}

static int compareVersionTo(String currentVersionString, String comparedVersionString) {
if (currentVersionString.contains("SNAPSHOT")) {
return 1;
}
final Runtime.Version currentVersion = Runtime.Version.parse(extractMajorMinor(currentVersionString));
final Runtime.Version comparedVersion = Runtime.Version.parse(extractMajorMinor(comparedVersionString));
return currentVersion.compareTo(comparedVersion);
}

static String extractMajorMinor(String version) {
if (version == null || version.isEmpty()) {
throw new IllegalArgumentException("Version string cannot be null or empty");
}
final Matcher matcher = VERSION_PATTERN.matcher(version);
if (!matcher.matches()) {
throw new IllegalArgumentException("Invalid version: " + version);
}
return matcher.replaceAll("$1");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package io.quarkus.devtools.codestarts.core.reader;

import static io.quarkus.devtools.codestarts.core.reader.QuteCodestartFileReader.compareVersionTo;
import static io.quarkus.devtools.codestarts.core.reader.QuteCodestartFileReader.extractMajorMinor;
import static org.assertj.core.api.Assertions.assertThat;

import org.junit.jupiter.api.Test;

class QuteCodestartFileReaderTest {

@Test
void testExtractVersion() {
assertThat(extractMajorMinor("3.12.0.Final")).isEqualTo("3.12");
assertThat(extractMajorMinor("3.12")).isEqualTo("3.12");
}

@Test
void testCompareVersion() {
assertThat(compareVersionTo("3.12.0.Final", "3.12")).isEqualTo(0);
assertThat(compareVersionTo("3.13.0", "3.12")).isGreaterThan(0);
assertThat(compareVersionTo("3.2.1", "3.12")).isLessThan(0);
assertThat(compareVersionTo("999-SNAPSHOT", "3.12")).isGreaterThan(0);
}
}

0 comments on commit a9b0a74

Please sign in to comment.