repl: -classpath argument
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.jet.cli.jvm;
|
|||||||
|
|
||||||
import com.google.common.base.Splitter;
|
import com.google.common.base.Splitter;
|
||||||
import com.google.common.collect.Iterables;
|
import com.google.common.collect.Iterables;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.intellij.openapi.Disposable;
|
import com.intellij.openapi.Disposable;
|
||||||
import jet.modules.Module;
|
import jet.modules.Module;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
@@ -92,7 +93,7 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
|
|||||||
arguments.freeArgs.isEmpty() &&
|
arguments.freeArgs.isEmpty() &&
|
||||||
(argumentsSourceDirs == null || argumentsSourceDirs.size() == 0)) {
|
(argumentsSourceDirs == null || argumentsSourceDirs.size() == 0)) {
|
||||||
|
|
||||||
ReplFromTerminal.run(rootDisposable, dependencies);
|
ReplFromTerminal.run(rootDisposable, dependencies, getClasspath(arguments));
|
||||||
return ExitCode.OK;
|
return ExitCode.OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -202,8 +203,19 @@ public class K2JVMCompiler extends CLICompiler<K2JVMCompilerArguments, K2JVMComp
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (arguments.classpath != null) {
|
if (arguments.classpath != null) {
|
||||||
Iterable<String> classpath = Splitter.on(File.pathSeparatorChar).split(arguments.classpath);
|
List<File> classpath = getClasspath(arguments);
|
||||||
CompileEnvironmentUtil.addToClasspath(configuration.getEnvironment(), Iterables.toArray(classpath, String.class));
|
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;
|
private final ConsoleReader consoleReader;
|
||||||
|
|
||||||
public ReplFromTerminal(@NotNull final Disposable disposable, @NotNull final CompilerDependencies compilerDependencies) {
|
public ReplFromTerminal(
|
||||||
final List<File> extraClasspath = Collections.<File>emptyList();
|
@NotNull final Disposable disposable,
|
||||||
|
@NotNull final CompilerDependencies compilerDependencies,
|
||||||
|
@NotNull final List<File> extraClasspath) {
|
||||||
new Thread("initialize-repl") {
|
new Thread("initialize-repl") {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@@ -193,8 +195,8 @@ public class ReplFromTerminal {
|
|||||||
return Arrays.asList(command.split(" "));
|
return Arrays.asList(command.split(" "));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void run(@NotNull Disposable disposable, @NotNull CompilerDependencies compilerDependencies) {
|
public static void run(@NotNull Disposable disposable, @NotNull CompilerDependencies compilerDependencies, @NotNull List<File> extraClasspath) {
|
||||||
new ReplFromTerminal(disposable, compilerDependencies).doRun();
|
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) {
|
public ReplInterpreter(@NotNull Disposable disposable, @NotNull CompilerDependencies compilerDependencies, @NotNull List<File> extraClasspath) {
|
||||||
// TODO: add extraClasspath to jetCoreEnvironment
|
// TODO: add extraClasspath to jetCoreEnvironment
|
||||||
jetCoreEnvironment = new JetCoreEnvironment(disposable, compilerDependencies);
|
jetCoreEnvironment = new JetCoreEnvironment(disposable, compilerDependencies);
|
||||||
|
for (File pathElement : extraClasspath) {
|
||||||
|
jetCoreEnvironment.addToClasspath(pathElement);
|
||||||
|
}
|
||||||
Project project = jetCoreEnvironment.getProject();
|
Project project = jetCoreEnvironment.getProject();
|
||||||
trace = new BindingTraceContext();
|
trace = new BindingTraceContext();
|
||||||
module = new ModuleDescriptor(Name.special("<repl>"));
|
module = new ModuleDescriptor(Name.special("<repl>"));
|
||||||
|
|||||||
Reference in New Issue
Block a user