Reworked support for local compiler plugins
This commit is contained in:
parent
7f3fc6ff95
commit
e5970bca18
3 changed files with 28 additions and 30 deletions
|
@ -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);
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue