repl: -classpath argument

This commit is contained in:
Stepan Koltsov
2012-06-28 19:38:45 +04:00
parent cd1211fcb3
commit 2f64000917
3 changed files with 24 additions and 7 deletions
@@ -18,6 +18,7 @@ package org.jetbrains.jet.cli.jvm;
import com.google.common.base.Splitter;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.intellij.openapi.Disposable;
import jet.modules.Module;
import org.jetbrains.annotations.NotNull;
@@ -92,7 +93,7 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
arguments.freeArgs.isEmpty() &&
(argumentsSourceDirs == null || argumentsSourceDirs.size() == 0)) {
ReplFromTerminal.run(rootDisposable, dependencies);
ReplFromTerminal.run(rootDisposable, dependencies, getClasspath(arguments));
return ExitCode.OK;
}
@@ -202,8 +203,19 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
}
if (arguments.classpath != null) {
Iterable<String> classpath = Splitter.on(File.pathSeparatorChar).split(arguments.classpath);
CompileEnvironmentUtil.addToClasspath(configuration.getEnvironment(), Iterables.toArray(classpath, String.class));
List<File> classpath = getClasspath(arguments);
CompileEnvironmentUtil.addToClasspath(configuration.getEnvironment(), Iterables.toArray(classpath, File.class));
}
}
@NotNull
private static List<File> getClasspath(@NotNull K2JVMCompilerArguments arguments) {
List<File> classpath = Lists.newArrayList();
if (arguments.classpath != null) {
for (String element : Splitter.on(File.pathSeparatorChar).split(arguments.classpath)) {
classpath.add(new File(element));
}
}
return classpath;
}
}
@@ -41,8 +41,10 @@ public class ReplFromTerminal {
private final ConsoleReader consoleReader;
public ReplFromTerminal(@NotNull final Disposable disposable, @NotNull final CompilerDependencies compilerDependencies) {
final List<File> extraClasspath = Collections.<File>emptyList();
public ReplFromTerminal(
@NotNull final Disposable disposable,
@NotNull final CompilerDependencies compilerDependencies,
@NotNull final List<File> extraClasspath) {
new Thread("initialize-repl") {
@Override
public void run() {
@@ -193,8 +195,8 @@ public class ReplFromTerminal {
return Arrays.asList(command.split(" "));
}
public static void run(@NotNull Disposable disposable, @NotNull CompilerDependencies compilerDependencies) {
new ReplFromTerminal(disposable, compilerDependencies).doRun();
public static void run(@NotNull Disposable disposable, @NotNull CompilerDependencies compilerDependencies, @NotNull List<File> extraClasspath) {
new ReplFromTerminal(disposable, compilerDependencies, extraClasspath).doRun();
}
}
@@ -94,6 +94,9 @@ public class ReplInterpreter {
public ReplInterpreter(@NotNull Disposable disposable, @NotNull CompilerDependencies compilerDependencies, @NotNull List<File> extraClasspath) {
// TODO: add extraClasspath to jetCoreEnvironment
jetCoreEnvironment = new JetCoreEnvironment(disposable, compilerDependencies);
for (File pathElement : extraClasspath) {
jetCoreEnvironment.addToClasspath(pathElement);
}
Project project = jetCoreEnvironment.getProject();
trace = new BindingTraceContext();
module = new ModuleDescriptor(Name.special("<repl>"));