aboutsummaryrefslogtreecommitdiff
path: root/stage2
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-03-09 01:48:09 -0500
committerChristopher Vogt <oss.nsp@cvogt.org>2016-03-09 01:48:09 -0500
commitb408b441569dc165f4d41b048ff64253695a491d (patch)
tree8ac98cf412825721528cb0c249b3fac74273e223 /stage2
parenta5a8515c22a7b434a0da34de48caafbef7e5ee8e (diff)
downloadcbt-b408b441569dc165f4d41b048ff64253695a491d.tar.gz
cbt-b408b441569dc165f4d41b048ff64253695a491d.tar.bz2
cbt-b408b441569dc165f4d41b048ff64253695a491d.zip
Add feature for starting the Scala REPL in arbitrary versions, propagate logger as implicits
Diffstat (limited to 'stage2')
-rw-r--r--stage2/AdminStage2.scala9
-rw-r--r--stage2/AdminTasks.scala23
-rw-r--r--stage2/BuildBuild.scala2
-rw-r--r--stage2/Lib.scala26
-rw-r--r--stage2/PackageBuild.scala4
5 files changed, 40 insertions, 24 deletions
diff --git a/stage2/AdminStage2.scala b/stage2/AdminStage2.scala
index 4120b1c..59f8f7d 100644
--- a/stage2/AdminStage2.scala
+++ b/stage2/AdminStage2.scala
@@ -1,11 +1,12 @@
package cbt
object AdminStage2{
- def main(args: Array[String]) = {
- val init = new Init(args.drop(3))
+ def main(_args: Array[String]) = {
+ val args = _args.drop(1).dropWhile(Seq("admin","direct") contains _)
+ val init = new Init(args)
val lib = new Lib(init.logger)
- val adminTasks = new AdminTasks(lib, args.drop(3))
+ val adminTasks = new AdminTasks(lib, args)
new lib.ReflectObject(adminTasks){
def usage: String = "Available methods: " ++ lib.taskNames(subclassType).mkString(" ")
- }.callNullary(args.lift(2))
+ }.callNullary(args.lift(0))
}
}
diff --git a/stage2/AdminTasks.scala b/stage2/AdminTasks.scala
index 2f7efe1..70b140e 100644
--- a/stage2/AdminTasks.scala
+++ b/stage2/AdminTasks.scala
@@ -1,12 +1,33 @@
package cbt
+import scala.collection.immutable.Seq
class AdminTasks(lib: Lib, args: Array[String]){
+ implicit val logger: Logger = lib.logger
def resolve = {
ClassPath.flatten(
- args(0).split(",").toVector.map{
+ args(1).split(",").toVector.map{
d =>
val v = d.split(":")
new MavenDependency(v(0),v(1),v(2))(lib.logger).classpath
}
)
}
+ def amm = ammonite
+ def ammonite = {
+ val version = args.lift(1).getOrElse(constants.scalaVersion)
+ val scalac = new ScalaCompilerDependency( version )
+ val d = MavenDependency(
+ "com.lihaoyi","ammonite-repl_2.11.7",args.lift(1).getOrElse("0.5.6")
+ )
+ // FIXME: this does not work quite yet, throws NoSuchFileException: /ammonite/repl/frontend/ReplBridge$.class
+ lib.runMain(
+ "ammonite.repl.Main", Seq(), d.classLoader
+ )
+ }
+ def scala = {
+ val version = args.lift(1).getOrElse(constants.scalaVersion)
+ val scalac = new ScalaCompilerDependency( version )
+ lib.runMain(
+ "scala.tools.nsc.MainGenericRunner", Seq("-cp", scalac.classpath.string), scalac.classLoader
+ )
+ }
}
diff --git a/stage2/BuildBuild.scala b/stage2/BuildBuild.scala
index 9283cdf..5e0f5d3 100644
--- a/stage2/BuildBuild.scala
+++ b/stage2/BuildBuild.scala
@@ -3,7 +3,7 @@ import java.io.File
import scala.collection.immutable.Seq
class BuildBuild(context: Context) extends Build(context){
- override def dependencies = Seq( CbtDependency(context.logger) ) ++ super.dependencies
+ override def dependencies = Seq( CbtDependency()(context.logger) ) ++ super.dependencies
def managedBuildDirectory: File = lib.realpath( projectDirectory.parent )
val managedBuild = {
val managedContext = context.copy( cwd = managedBuildDirectory )
diff --git a/stage2/Lib.scala b/stage2/Lib.scala
index 6f83859..924a6c0 100644
--- a/stage2/Lib.scala
+++ b/stage2/Lib.scala
@@ -80,35 +80,29 @@ final class Lib(logger: Logger) extends Stage1Lib(logger) with Scaffold{
}
def docJar(
+ scalaVersion: String,
sourceFiles: Seq[File],
- dependenyClasspath: ClassPath,
+ dependencyClasspath: ClassPath,
apiTarget: File,
jarTarget: File,
artifactId: String,
version: String,
compileArgs: Seq[String]
): File = {
- // FIXME: get this dynamically somehow, or is this even needed?
- val javacp = ClassPath(
- "/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/cldrdata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/dnsns.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/jaccess.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/jfxrt.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/localedata.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/nashorn.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunec.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunjce_provider.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/sunpkcs11.jar:/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/ext/zipfs.jar:/System/Library/Java/Extensions/MRJToolkit.jar".split(":").toVector.map(new File(_))
- )
-
mkdir(Path(apiTarget))
if(sourceFiles.nonEmpty){
- System.err.println("creating docs")
+ val args = Seq(
+ // FIXME: can we use compiler dependency here?
+ "-cp", dependencyClasspath.string, // FIXME: does this break for builds that don't have scalac dependencies?
+ "-d", apiTarget.toString
+ ) ++ compileArgs ++ sourceFiles.map(_.toString)
+ logger.lib("creating docs for source files "+args.mkString(", "))
trapExitCode{
redirectOutToErr{
runMain(
"scala.tools.nsc.ScalaDoc",
- Seq(
- // FIXME: can we use compiler dependency here?
- "-cp", /*javacp++":"++*/ScalaDependencies(logger).classpath.string ++ ":" ++ dependenyClasspath.string,
- "-d", apiTarget.toString
- ) ++ compileArgs ++ sourceFiles.map(_.toString),
- new URLClassLoader(
- ScalaDependencies(logger).classpath ++ javacp,
- ClassLoader.getSystemClassLoader
- )
+ args,
+ ScalaDependencies(scalaVersion)(logger).classLoader
)
}
}
diff --git a/stage2/PackageBuild.scala b/stage2/PackageBuild.scala
index 96c7b6f..b037e7f 100644
--- a/stage2/PackageBuild.scala
+++ b/stage2/PackageBuild.scala
@@ -14,12 +14,12 @@ abstract class PackageBuild(context: Context) extends Build(context) with Artifa
private object cacheSrcJarBasicBuild extends Cache[File]
def srcJar: File = cacheSrcJarBasicBuild{
- lib.srcJar(sources, artifactId, version, scalaTarget)
+ lib.srcJar( sourceFiles, artifactId, version, scalaTarget )
}
private object cacheDocBasicBuild extends Cache[File]
def docJar: File = cacheDocBasicBuild{
- lib.docJar( sources, dependencyClasspath, apiTarget, jarTarget, artifactId, version, scalacOptions )
+ lib.docJar( scalaVersion, sourceFiles, dependencyClasspath, apiTarget, jarTarget, artifactId, version, scalacOptions )
}
override def jars = jar +: dependencyJars