Reworked support for local compiler plugins

This commit is contained in:
Erik C. Thauvin 2024-07-21 21:47:10 -07:00
parent 7f3fc6ff95
commit e5970bca18
Signed by: erik
GPG key ID: 776702A6A2DA330E
3 changed files with 28 additions and 30 deletions

View file

@ -585,6 +585,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
* *
* @param plugins one or more plugins * @param plugins one or more plugins
* @return this class instance * @return this class instance
* @see #plugins(File, CompilerPlugin...)
*/ */
public CompileKotlinOperation plugins(CompilerPlugin... plugins) { public CompileKotlinOperation plugins(CompilerPlugin... plugins) {
if (kotlinHome_ != null) { if (kotlinHome_ != null) {
@ -600,26 +601,6 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
return this; return this;
} }
/**
* Provides compiler plugins.
*
* @param jars the plugins Java archives
* @param plugins one or more plugins
* @return this class instance
*/
public CompileKotlinOperation plugins(Collection<File> jars, CompilerPlugin... plugins) {
jars.forEach(jar -> {
for (var plugin : plugins) {
if (jar.getName().matches(plugin.jar)) {
plugins_.add(jar.getAbsolutePath());
break;
}
}
});
return this;
}
// Combine Kotlin sources // Combine Kotlin sources
private Collection<File> sources(Collection<File> files, Collection<File> directories) { private Collection<File> sources(Collection<File> files, Collection<File> directories) {
var sources = new ArrayList<>(files); var sources = new ArrayList<>(files);

View file

@ -23,14 +23,14 @@ package rife.bld.extension.kotlin;
* @since 1.0 * @since 1.0
*/ */
public enum CompilerPlugin { public enum CompilerPlugin {
ALL_OPEN("kotlin-allopen-compiler-plugin.jar"), ALL_OPEN("allopen-compiler-plugin.jar"),
ASSIGNMENT("kotlin-assignment-compiler-plugin.jar"), ASSIGNMENT("assignment-compiler-plugin.jar"),
KOTLINX_SERIALIZATION("kotlinx-serialization-compiler-plugin.jar"), KOTLINX_SERIALIZATION("kotlinx-serialization-compiler-plugin.jar"),
KOTLIN_SERIALIZATION("kotlin-serialization-compiler-plugin.jar"), KOTLIN_SERIALIZATION("kotlin-serialization-compiler-plugin.jar"),
LOMBOK("kotlin-lombok-compiler-plugin.jar"), LOMBOK("lombok-compiler-plugin.jar"),
NOARG("kotlin-noarg-compiler-plugin.jar"), NOARG("noarg-compiler-plugin.jar"),
POWER_ASSERT("kotlin-power-assert-compiler-plugin.jar"), POWER_ASSERT("power-assert-compiler-plugin.jar"),
SAM_WITH_RECEIVER("kotlin-sam-with-receiver-compiler-plugin.jar"); SAM_WITH_RECEIVER("sam-with-receiver-compiler-plugin.jar");
public final String jar; public final String jar;

View file

@ -18,6 +18,7 @@ package rife.bld.extension;
import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import rife.bld.BaseProject;
import rife.bld.Project; import rife.bld.Project;
import rife.bld.blueprints.BaseProjectBlueprint; import rife.bld.blueprints.BaseProjectBlueprint;
import rife.bld.extension.kotlin.CompileOptions; import rife.bld.extension.kotlin.CompileOptions;
@ -28,7 +29,6 @@ import java.io.File;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.logging.ConsoleHandler; import java.util.logging.ConsoleHandler;
@ -71,9 +71,7 @@ class CompileKotlinOperationTest {
.plugins("plugin1", "plugin2") .plugins("plugin1", "plugin2")
.plugins(CompilerPlugin.KOTLIN_SERIALIZATION, CompilerPlugin.ASSIGNMENT) .plugins(CompilerPlugin.KOTLIN_SERIALIZATION, CompilerPlugin.ASSIGNMENT)
.plugins(new File("lib/compile"), CompilerPlugin.LOMBOK, CompilerPlugin.POWER_ASSERT) .plugins(new File("lib/compile"), CompilerPlugin.LOMBOK, CompilerPlugin.POWER_ASSERT)
.plugins(List.of("plugin3", "plugin4")) .plugins(List.of("plugin3", "plugin4"));
.plugins(Arrays.stream(Objects.requireNonNull(new File("lib/compile").listFiles())).toList(),
CompilerPlugin.ALL_OPEN, CompilerPlugin.SAM_WITH_RECEIVER);
assertThat(op.kotlinHome().getName()).as("kotlin_home").isEqualTo("kotlin_home"); assertThat(op.kotlinHome().getName()).as("kotlin_home").isEqualTo("kotlin_home");
assertThat(op.kotlinc().getName()).as("kotlinc").isEqualTo("kotlinc"); assertThat(op.kotlinc().getName()).as("kotlinc").isEqualTo("kotlinc");
@ -155,4 +153,23 @@ class CompileKotlinOperationTest {
FileUtils.deleteDirectory(tmpDir); FileUtils.deleteDirectory(tmpDir);
} }
} }
@Test
@SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops")
void testPlugins() {
var op = new CompileKotlinOperation()
.fromProject(new BaseProject())
.plugins(CompilerPlugin.ALL_OPEN,
CompilerPlugin.ASSIGNMENT,
CompilerPlugin.KOTLINX_SERIALIZATION,
CompilerPlugin.KOTLIN_SERIALIZATION,
CompilerPlugin.LOMBOK,
CompilerPlugin.NOARG,
CompilerPlugin.POWER_ASSERT,
CompilerPlugin.SAM_WITH_RECEIVER);
for (var p : op.plugins()) {
assertThat(new File(p)).as(p).exists();
}
}
} }