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<String> compileTestClasspath_ = new ArrayList<>();
private final Collection<File> mainSourceDirectories_ = new ArrayList<>(); private final Collection<File> mainSourceDirectories_ = new ArrayList<>();
private final Collection<File> mainSourceFiles_ = 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> testSourceDirectories_ = new ArrayList<>();
private final Collection<File> testSourceFiles_ = new ArrayList<>(); private final Collection<File> testSourceFiles_ = new ArrayList<>();
private File buildMainDirectory_; private File buildMainDirectory_;
@ -269,6 +270,11 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
args.addAll(compileOptions_.args()); args.addAll(compileOptions_.args());
} }
// plugins
if (!plugins_.isEmpty()) {
plugins_.forEach(p -> args.add("-Xplugin=" + p));
}
// sources // sources
sources.forEach(f -> args.add(f.getAbsolutePath())); sources.forEach(f -> args.add(f.getAbsolutePath()));
@ -399,6 +405,28 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
return mainSourceFiles_; 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 // 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

@ -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 optionName the plugin option name
* @param value the plugin option value * @param value the plugin option value
*/ */