Skip to content

Commit 4bd5c5e

Browse files
committed
Make run run classfiles similar to dotr
1 parent ece7600 commit 4bd5c5e

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

project/Build.scala

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ object DottyBuild extends Build {
7777
dependsOn(`dotty-library`).
7878
dependsOn(`dotty-interfaces`).
7979
settings(
80+
addCommandAlias("run", "dotty-compiler/run") ++
8081
addCommandAlias("dotc", "dotty-compiler/dotc") ++
8182
addCommandAlias("repl", "dotty-compiler/repl") ++
8283
addCommandAlias(
@@ -180,6 +181,28 @@ object DottyBuild extends Build {
180181
)
181182
}.evaluated,
182183

184+
// Override run to be able to run compiled classfiles
185+
run := {
186+
val args: Seq[String] = spaceDelimited("<arg>").parsed
187+
val java: String = Process("which" :: "java" :: Nil) !!
188+
val scalaLib = (dependencyClasspath in Runtime, packageAll)
189+
.map { (attList, _) =>
190+
attList
191+
.map(_.data.getAbsolutePath)
192+
.find(_.contains("scala-library"))
193+
.toList.mkString(":")
194+
}.value
195+
196+
if (java == "")
197+
println("Couldn't find java executable on path, please install java to a default location")
198+
else if (scalaLib == "") {
199+
println("Couldn't find scala-library on classpath, please run using script in bin dir instead")
200+
} else {
201+
val dottyLib = packageAll.value("dotty-library")
202+
s"""$java -classpath .:$dottyLib:$scalaLib ${args.mkString(" ")}""" !
203+
}
204+
},
205+
183206
// Set run baseDir to be root of project, makes dotc saner
184207
baseDirectory in run := baseDirectory.value / "..",
185208
dotc := Def.inputTaskDyn {

0 commit comments

Comments
 (0)