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
* @return this class instance
* @see #plugins(File, CompilerPlugin...)
*/
public CompileKotlinOperation plugins(CompilerPlugin... plugins) {
if (kotlinHome_ != null) {
@ -600,26 +601,6 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
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
private Collection<File> sources(Collection<File> files, Collection<File> directories) {
var sources = new ArrayList<>(files);

View file

@ -23,14 +23,14 @@ package rife.bld.extension.kotlin;
* @since 1.0
*/
public enum CompilerPlugin {
ALL_OPEN("kotlin-allopen-compiler-plugin.jar"),
ASSIGNMENT("kotlin-assignment-compiler-plugin.jar"),
ALL_OPEN("allopen-compiler-plugin.jar"),
ASSIGNMENT("assignment-compiler-plugin.jar"),
KOTLINX_SERIALIZATION("kotlinx-serialization-compiler-plugin.jar"),
KOTLIN_SERIALIZATION("kotlin-serialization-compiler-plugin.jar"),
LOMBOK("kotlin-lombok-compiler-plugin.jar"),
NOARG("kotlin-noarg-compiler-plugin.jar"),
POWER_ASSERT("kotlin-power-assert-compiler-plugin.jar"),
SAM_WITH_RECEIVER("kotlin-sam-with-receiver-compiler-plugin.jar");
LOMBOK("lombok-compiler-plugin.jar"),
NOARG("noarg-compiler-plugin.jar"),
POWER_ASSERT("power-assert-compiler-plugin.jar"),
SAM_WITH_RECEIVER("sam-with-receiver-compiler-plugin.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.Test;
import rife.bld.BaseProject;
import rife.bld.Project;
import rife.bld.blueprints.BaseProjectBlueprint;
import rife.bld.extension.kotlin.CompileOptions;
@ -28,7 +29,6 @@ import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;
import java.util.logging.ConsoleHandler;
@ -71,9 +71,7 @@ class CompileKotlinOperationTest {
.plugins("plugin1", "plugin2")
.plugins(CompilerPlugin.KOTLIN_SERIALIZATION, CompilerPlugin.ASSIGNMENT)
.plugins(new File("lib/compile"), CompilerPlugin.LOMBOK, CompilerPlugin.POWER_ASSERT)
.plugins(List.of("plugin3", "plugin4"))
.plugins(Arrays.stream(Objects.requireNonNull(new File("lib/compile").listFiles())).toList(),
CompilerPlugin.ALL_OPEN, CompilerPlugin.SAM_WITH_RECEIVER);
.plugins(List.of("plugin3", "plugin4"));
assertThat(op.kotlinHome().getName()).as("kotlin_home").isEqualTo("kotlin_home");
assertThat(op.kotlinc().getName()).as("kotlinc").isEqualTo("kotlinc");
@ -155,4 +153,23 @@ class CompileKotlinOperationTest {
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();
}
}
}