diff --git a/src/main/java/rife/bld/extension/CompileKotlinOperation.java b/src/main/java/rife/bld/extension/CompileKotlinOperation.java index f8ce05e..cc28873 100644 --- a/src/main/java/rife/bld/extension/CompileKotlinOperation.java +++ b/src/main/java/rife/bld/extension/CompileKotlinOperation.java @@ -18,6 +18,8 @@ package rife.bld.extension; import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler; import rife.bld.BaseProject; +import rife.bld.extension.kotlin.CompileOptions; +import rife.bld.extension.kotlin.CompilerPlugin; import rife.bld.operations.AbstractOperation; import rife.tools.FileUtils; @@ -26,7 +28,6 @@ import java.io.IOException; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; -import java.util.regex.Pattern; /** * Compiles main and test Kotlin sources in the relevant build directories. @@ -35,10 +36,6 @@ import java.util.regex.Pattern; * @since 1.0 */ public class CompileKotlinOperation extends AbstractOperation { - /** - * The Kotlin file (.kt) pattern. - */ - public static final Pattern KOTLIN_FILE_PATTERN = Pattern.compile("^.*\\.kt$"); private static final Logger LOGGER = Logger.getLogger(CompileKotlinOperation.class.getName()); private final Collection compileMainClasspath_ = new ArrayList<>(); private final Collection compileTestClasspath_ = new ArrayList<>(); @@ -49,7 +46,7 @@ public class CompileKotlinOperation extends AbstractOperation testSourceFiles_ = new ArrayList<>(); private File buildMainDirectory_; private File buildTestDirectory_; - private CompileKotlinOptions compileOptions_ = new CompileKotlinOptions(); + private CompileOptions compileOptions_ = new CompileOptions(); private BaseProject project_; /** @@ -77,26 +74,6 @@ public class CompileKotlinOperation extends AbstractOperation getKotlinFileList(File directory) { - if (directory == null) { - return Collections.emptyList(); - } else if (!directory.exists()) { - if (LOGGER.isLoggable(Level.WARNING)) { - LOGGER.warning("Directory not found: " + directory.getAbsolutePath()); - } - return Collections.emptyList(); - } else { - return FileUtils.getFileList(directory, KOTLIN_FILE_PATTERN, null).stream().map((file) -> - new File(directory, file)).toList(); - } - } - /** * Determines if the given string is not blank. * @@ -121,7 +98,7 @@ public class CompileKotlinOperation extends AbstractOperation compileMainClasspath() { return compileMainClasspath_; @@ -181,9 +158,9 @@ public class CompileKotlinOperation extends AbstractOperation compileTestClasspath() { return compileTestClasspath_; @@ -317,7 +294,7 @@ public class CompileKotlinOperation extends AbstractOperation mainSourceDirectories() { return mainSourceDirectories_; @@ -433,6 +423,19 @@ public class CompileKotlinOperation extends AbstractOperation mainSourceFiles() { return mainSourceFiles_; @@ -464,6 +467,15 @@ public class CompileKotlinOperation extends AbstractOperation plugins() { + return plugins_; + } + /** * Provides compiler plugins. * @@ -482,9 +494,22 @@ public class CompileKotlinOperation extends AbstractOperation jars, CompileKotlinPlugin... plugins) { + public CompileKotlinOperation plugins(Collection jars, CompilerPlugin... plugins) { jars.forEach(jar -> { for (var plugin : plugins) { - if (jar.getName().matches(plugin.label)) { + if (jar.getName().matches(plugin.regex)) { plugins_.add(jar.getAbsolutePath()); break; } @@ -512,10 +537,7 @@ public class CompileKotlinOperation extends AbstractOperation sources(Collection files, Collection directories) { var sources = new ArrayList<>(files); - for (var directory : directories) { - sources.addAll(getKotlinFileList(directory)); - } - + sources.addAll(directories); return sources; } @@ -530,6 +552,19 @@ public class CompileKotlinOperation extends AbstractOperation testSourceDirectories() { return testSourceDirectories_; @@ -561,6 +596,19 @@ public class CompileKotlinOperation extends AbstractOperation new File[files.length])); + return this; + } + /** * Provides a list of test files that should be compiled. * @@ -573,9 +621,9 @@ public class CompileKotlinOperation extends AbstractOperation testSourceFiles() { return testSourceFiles_;