Added support for compiler plugins

This commit is contained in:
Erik C. Thauvin 2023-11-12 16:20:30 -08:00
parent b29169213b
commit 132fc7199b
2 changed files with 30 additions and 2 deletions

View file

@ -41,6 +41,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
private final Collection<String> compileTestClasspath_ = new ArrayList<>();
private final Collection<File> mainSourceDirectories_ = new ArrayList<>();
private final Collection<File> mainSourceFiles_ = new ArrayList<>();
private final Collection<String> plugins_ = new ArrayList<>();
private final Collection<File> testSourceDirectories_ = new ArrayList<>();
private final Collection<File> testSourceFiles_ = new ArrayList<>();
private File buildMainDirectory_;
@ -269,6 +270,11 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
args.addAll(compileOptions_.args());
}
// plugins
if (!plugins_.isEmpty()) {
plugins_.forEach(p -> args.add("-Xplugin=" + p));
}
// sources
sources.forEach(f -> args.add(f.getAbsolutePath()));
@ -399,6 +405,28 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
return mainSourceFiles_;
}
/**
* Provides compiler plugins.
*
* @param plugins one or more plugins
* @return this class instance
*/
public CompileKotlinOperation plugins(String... plugins) {
plugins_.addAll(List.of(plugins));
return this;
}
/**
* Provides compiler plugins.
*
* @param plugins a list of plugins
* @return this class instance
*/
public CompileKotlinOperation plugins(Collection<String> plugins) {
plugins_.addAll(plugins);
return this;
}
// Combine Kotlin sources
private Collection<File> sources(Collection<File> files, Collection<File> directories) {
var sources = new ArrayList<>(files);

View file

@ -496,9 +496,9 @@ public class CompileKotlinOptions {
}
/**
* Enable verbose logging output which includes details of the compilation process.
* Pass an option to a plugin.
*
* @param id the plugin
* @param id the plugin ID
* @param optionName the plugin option name
* @param value the plugin option value
*/