diff --git a/compiler/cli/src/org/jetbrains/jet/cli/CompilerArguments.java b/compiler/cli/src/org/jetbrains/jet/cli/CompilerArguments.java index 4c33f78ba45..712f4a4eb9f 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/CompilerArguments.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/CompilerArguments.java @@ -29,6 +29,17 @@ import java.util.List; public class CompilerArguments { private List compilerPlugins = new ArrayList(); + // TODO ideally we'd unify this with 'src' to just having a single field that supports multiple files/dirs + private List sourceDirs; + + public List getSourceDirs() { + return sourceDirs; + } + + public void setSourceDirs(List sourceDirs) { + this.sourceDirs = sourceDirs; + } + @Argument(value = "output", description = "output directory") public String outputDir; diff --git a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java index be035f98d63..9a1f8daa25c 100644 --- a/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java +++ b/compiler/cli/src/org/jetbrains/jet/cli/KotlinCompiler.java @@ -123,7 +123,12 @@ public class KotlinCompiler { noErrors = environment.compileModuleScript(arguments.module, arguments.jar, arguments.outputDir, arguments.includeRuntime); } else { - noErrors = environment.compileBunchOfSources(arguments.src, arguments.jar, arguments.outputDir, arguments.includeRuntime); + // TODO ideally we'd unify to just having a single field that supports multiple files/dirs + if (arguments.getSourceDirs() != null) { + noErrors = environment.compileBunchOfSourceDirectories(arguments.getSourceDirs(), arguments.jar, arguments.outputDir, arguments.includeRuntime); + } else { + noErrors = environment.compileBunchOfSources(arguments.src, arguments.jar, arguments.outputDir, arguments.includeRuntime); + } } return noErrors ? OK : COMPILATION_ERROR; } diff --git a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java index 39c1e47f4bd..43fd257009f 100644 --- a/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java +++ b/compiler/cli/src/org/jetbrains/jet/compiler/CompileEnvironment.java @@ -405,6 +405,21 @@ public class CompileEnvironment { session.addSources(sourceFileOrDir); + return compileBunchOfSources(jar, outputDir, includeRuntime, session); + } + + public boolean compileBunchOfSourceDirectories(List sources, String jar, String outputDir, boolean includeRuntime) { + CompileSession session = newCompileSession(); + session.setStubs(mode != CompilerSpecialMode.REGULAR); + + for (String source : sources) { + session.addSources(source); + } + + return compileBunchOfSources(jar, outputDir, includeRuntime, session); + } + + private boolean compileBunchOfSources(String jar, String outputDir, boolean includeRuntime, CompileSession session) { FqName mainClass = null; for (JetFile file : session.getSourceFiles()) { if (JetMainDetector.hasMain(file.getDeclarations())) {