Added support for Collections as arguments
This commit is contained in:
parent
4fb70e48fe
commit
6e161e1445
2 changed files with 42 additions and 46 deletions
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
|
@ -1,5 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="EntryPointsManager">
|
||||||
|
<pattern value="rife.bld.extension.CompileKotlinOperationBuild" method="pmd" />
|
||||||
|
</component>
|
||||||
<component name="PDMPlugin">
|
<component name="PDMPlugin">
|
||||||
<option name="customRuleSets">
|
<option name="customRuleSets">
|
||||||
<list>
|
<list>
|
||||||
|
|
|
@ -23,16 +23,11 @@ import rife.tools.FileUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static rife.tools.FileUtils.getFileList;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compiles main and test Kotlin sources in the relevant build directories.
|
* Compiles main and test Kotlin sources in the relevant build directories.
|
||||||
*
|
*
|
||||||
|
@ -42,22 +37,22 @@ import static rife.tools.FileUtils.getFileList;
|
||||||
public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOperation> {
|
public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOperation> {
|
||||||
public static final Pattern KOTLIN_FILE_PATTERN = Pattern.compile("^.*\\.kt$");
|
public static final Pattern KOTLIN_FILE_PATTERN = Pattern.compile("^.*\\.kt$");
|
||||||
private static final Logger LOGGER = Logger.getLogger(CompileKotlinOperation.class.getName());
|
private static final Logger LOGGER = Logger.getLogger(CompileKotlinOperation.class.getName());
|
||||||
public final List<String> compileOptions_ = new ArrayList<>();
|
public final Collection<String> compileOptions_ = new ArrayList<>();
|
||||||
private final List<String> compileMainClasspath_ = new ArrayList<>();
|
private final Collection<String> compileMainClasspath_ = new ArrayList<>();
|
||||||
private final List<String> compileTestClasspath_ = new ArrayList<>();
|
private final Collection<String> compileTestClasspath_ = new ArrayList<>();
|
||||||
private final List<File> mainSourceDirectories_ = new ArrayList<>();
|
private final Collection<File> mainSourceDirectories_ = new ArrayList<>();
|
||||||
private final List<File> mainSourceFiles_ = new ArrayList<>();
|
private final Collection<File> mainSourceFiles_ = new ArrayList<>();
|
||||||
private final List<File> testSourceDirectories_ = new ArrayList<>();
|
private final Collection<File> testSourceDirectories_ = new ArrayList<>();
|
||||||
private final List<File> testSourceFiles_ = new ArrayList<>();
|
private final Collection<File> testSourceFiles_ = new ArrayList<>();
|
||||||
private File buildMainDirectory_;
|
private File buildMainDirectory_;
|
||||||
private File buildTestDirectory_;
|
private File buildTestDirectory_;
|
||||||
|
|
||||||
public static List<File> getKotlinFileList(File directory) {
|
public static Collection<File> getKotlinFileList(File directory) {
|
||||||
if (directory == null) {
|
if (directory == null) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
} else {
|
} else {
|
||||||
var dir_abs = directory.getAbsoluteFile();
|
var dir_abs = directory.getAbsoluteFile();
|
||||||
return getFileList(dir_abs, KOTLIN_FILE_PATTERN, null).stream().map((file) ->
|
return FileUtils.getFileList(dir_abs, KOTLIN_FILE_PATTERN, null).stream().map((file) ->
|
||||||
new File(dir_abs, file)).toList();
|
new File(dir_abs, file)).toList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,7 +124,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*
|
*
|
||||||
* @return the main compilation classpath list
|
* @return the main compilation classpath list
|
||||||
*/
|
*/
|
||||||
public List<String> compileMainClasspath() {
|
public Collection<String> compileMainClasspath() {
|
||||||
return compileMainClasspath_;
|
return compileMainClasspath_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -139,7 +134,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param options the list of compiler options
|
* @param options the list of compiler options
|
||||||
* @return this operation instance
|
* @return this operation instance
|
||||||
*/
|
*/
|
||||||
public CompileKotlinOperation compileOptions(List<String> options) {
|
public CompileKotlinOperation compileOptions(Collection<String> options) {
|
||||||
compileOptions_.addAll(options);
|
compileOptions_.addAll(options);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -160,7 +155,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*
|
*
|
||||||
* @return the list of compiler options
|
* @return the list of compiler options
|
||||||
*/
|
*/
|
||||||
public List<String> compileOptions() {
|
public Collection<String> compileOptions() {
|
||||||
return compileOptions_;
|
return compileOptions_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -181,7 +176,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param classpath a list of classpath entries
|
* @param classpath a list of classpath entries
|
||||||
* @return this operation instance
|
* @return this operation instance
|
||||||
*/
|
*/
|
||||||
public CompileKotlinOperation compileTestClasspath(List<String> classpath) {
|
public CompileKotlinOperation compileTestClasspath(Collection<String> classpath) {
|
||||||
compileTestClasspath_.addAll(classpath);
|
compileTestClasspath_.addAll(classpath);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -191,11 +186,10 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*
|
*
|
||||||
* @return the test compilation classpath list
|
* @return the test compilation classpath list
|
||||||
*/
|
*/
|
||||||
public List<String> compileTestClasspath() {
|
public Collection<String> compileTestClasspath() {
|
||||||
return compileTestClasspath_;
|
return compileTestClasspath_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Performs the compile operation.
|
* Performs the compile operation.
|
||||||
*/
|
*/
|
||||||
|
@ -216,13 +210,9 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*/
|
*/
|
||||||
protected void executeBuildMainSources()
|
protected void executeBuildMainSources()
|
||||||
throws IOException {
|
throws IOException {
|
||||||
var sources = new ArrayList<>(mainSourceFiles());
|
|
||||||
for (var directory : mainSourceDirectories()) {
|
|
||||||
sources.addAll(getKotlinFileList(directory));
|
|
||||||
}
|
|
||||||
executeBuildSources(
|
executeBuildSources(
|
||||||
compileMainClasspath(),
|
compileMainClasspath(),
|
||||||
sources,
|
sources(mainSourceFiles(), mainSourceDirectories()),
|
||||||
buildMainDirectory());
|
buildMainDirectory());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +223,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param sources the source files to compile
|
* @param sources the source files to compile
|
||||||
* @param destination the destination directory
|
* @param destination the destination directory
|
||||||
*/
|
*/
|
||||||
protected void executeBuildSources(List<String> classpath, List<File> sources, File destination)
|
protected void executeBuildSources(Collection<String> classpath, Collection<File> sources, File destination)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
if (sources.isEmpty() || destination == null) {
|
if (sources.isEmpty() || destination == null) {
|
||||||
return;
|
return;
|
||||||
|
@ -244,7 +234,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
|
|
||||||
// classpath
|
// classpath
|
||||||
args.add("-cp");
|
args.add("-cp");
|
||||||
args.add(FileUtils.joinPaths(classpath));
|
args.add(FileUtils.joinPaths(classpath.stream().toList()));
|
||||||
|
|
||||||
// destination
|
// destination
|
||||||
args.add("-d");
|
args.add("-d");
|
||||||
|
@ -274,13 +264,9 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*/
|
*/
|
||||||
protected void executeBuildTestSources()
|
protected void executeBuildTestSources()
|
||||||
throws IOException {
|
throws IOException {
|
||||||
var sources = new ArrayList<>(testSourceFiles());
|
|
||||||
for (var directory : testSourceDirectories()) {
|
|
||||||
sources.addAll(getKotlinFileList(directory));
|
|
||||||
}
|
|
||||||
executeBuildSources(
|
executeBuildSources(
|
||||||
compileTestClasspath(),
|
compileTestClasspath(),
|
||||||
sources,
|
sources(testSourceFiles(), testSourceDirectories()),
|
||||||
buildTestDirectory());
|
buildTestDirectory());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -302,15 +288,12 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param project the project to configure the compile operation from
|
* @param project the project to configure the compile operation from
|
||||||
*/
|
*/
|
||||||
public CompileKotlinOperation fromProject(BaseProject project) {
|
public CompileKotlinOperation fromProject(BaseProject project) {
|
||||||
var srcMainKotlinDirectory = new File(project.srcMainDirectory(), "kotlin");
|
|
||||||
var srcTestKotlinDirectory = new File(project.srcTestDirectory(), "kotlin");
|
|
||||||
|
|
||||||
return buildMainDirectory(project.buildMainDirectory())
|
return buildMainDirectory(project.buildMainDirectory())
|
||||||
.buildTestDirectory(project.buildTestDirectory())
|
.buildTestDirectory(project.buildTestDirectory())
|
||||||
.compileMainClasspath(project.compileMainClasspath())
|
.compileMainClasspath(project.compileMainClasspath())
|
||||||
.compileTestClasspath(project.compileTestClasspath())
|
.compileTestClasspath(project.compileTestClasspath())
|
||||||
.mainSourceFiles(getKotlinFileList(srcMainKotlinDirectory))
|
.mainSourceFiles(getKotlinFileList(new File(project.srcMainDirectory(), "kotlin")))
|
||||||
.testSourceFiles(getKotlinFileList(srcTestKotlinDirectory));
|
.testSourceFiles(getKotlinFileList(new File(project.srcTestDirectory(), "kotlin")));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
|
@ -334,7 +317,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param directories a list of main source directories
|
* @param directories a list of main source directories
|
||||||
* @return this operation instance
|
* @return this operation instance
|
||||||
*/
|
*/
|
||||||
public CompileKotlinOperation mainSourceDirectories(List<File> directories) {
|
public CompileKotlinOperation mainSourceDirectories(Collection<File> directories) {
|
||||||
mainSourceDirectories_.addAll(directories);
|
mainSourceDirectories_.addAll(directories);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -344,7 +327,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*
|
*
|
||||||
* @return the list of main source directories to compile
|
* @return the list of main source directories to compile
|
||||||
*/
|
*/
|
||||||
public List<File> mainSourceDirectories() {
|
public Collection<File> mainSourceDirectories() {
|
||||||
return mainSourceDirectories_;
|
return mainSourceDirectories_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,7 +348,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param files a list of main files
|
* @param files a list of main files
|
||||||
* @return this operation instance
|
* @return this operation instance
|
||||||
*/
|
*/
|
||||||
public CompileKotlinOperation mainSourceFiles(List<File> files) {
|
public CompileKotlinOperation mainSourceFiles(Collection<File> files) {
|
||||||
mainSourceFiles_.addAll(files);
|
mainSourceFiles_.addAll(files);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -375,10 +358,20 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*
|
*
|
||||||
* @return the list of main files to compile
|
* @return the list of main files to compile
|
||||||
*/
|
*/
|
||||||
public List<File> mainSourceFiles() {
|
public Collection<File> mainSourceFiles() {
|
||||||
return mainSourceFiles_;
|
return mainSourceFiles_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Combine Kotlin sources
|
||||||
|
private Collection<File> sources(Collection<File> files, Collection<File> directories) {
|
||||||
|
var sources = new ArrayList<>(files);
|
||||||
|
for (var directory : directories) {
|
||||||
|
sources.addAll(getKotlinFileList(directory));
|
||||||
|
}
|
||||||
|
|
||||||
|
return sources;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides test source directories that should be compiled.
|
* Provides test source directories that should be compiled.
|
||||||
*
|
*
|
||||||
|
@ -396,7 +389,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param directories a list of test source directories
|
* @param directories a list of test source directories
|
||||||
* @return this operation instance
|
* @return this operation instance
|
||||||
*/
|
*/
|
||||||
public CompileKotlinOperation testSourceDirectories(List<File> directories) {
|
public CompileKotlinOperation testSourceDirectories(Collection<File> directories) {
|
||||||
testSourceDirectories_.addAll(directories);
|
testSourceDirectories_.addAll(directories);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -406,7 +399,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*
|
*
|
||||||
* @return the list of test source directories to compile
|
* @return the list of test source directories to compile
|
||||||
*/
|
*/
|
||||||
public List<File> testSourceDirectories() {
|
public Collection<File> testSourceDirectories() {
|
||||||
return testSourceDirectories_;
|
return testSourceDirectories_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,7 +420,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
* @param files a list of test files
|
* @param files a list of test files
|
||||||
* @return this operation instance
|
* @return this operation instance
|
||||||
*/
|
*/
|
||||||
public CompileKotlinOperation testSourceFiles(List<File> files) {
|
public CompileKotlinOperation testSourceFiles(Collection<File> files) {
|
||||||
testSourceFiles_.addAll(files);
|
testSourceFiles_.addAll(files);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -437,7 +430,7 @@ public class CompileKotlinOperation extends AbstractOperation<CompileKotlinOpera
|
||||||
*
|
*
|
||||||
* @return the list of test files to compile
|
* @return the list of test files to compile
|
||||||
*/
|
*/
|
||||||
public List<File> testSourceFiles() {
|
public Collection<File> testSourceFiles() {
|
||||||
return testSourceFiles_;
|
return testSourceFiles_;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue