aboutsummaryrefslogtreecommitdiff
path: root/stage1/Stage1Lib.scala
diff options
context:
space:
mode:
authorChristopher Vogt <oss.nsp@cvogt.org>2016-03-12 16:06:14 -0500
committerChristopher Vogt <oss.nsp@cvogt.org>2016-03-12 16:06:14 -0500
commit906db6c55289d9aba5da824d5f2f3d2cae70813e (patch)
tree1b5fea4598ede93c60f9940b6776f2a0506daa46 /stage1/Stage1Lib.scala
parentb143c01a2e180b647eb27338cb7302aa38ef10c6 (diff)
downloadcbt-906db6c55289d9aba5da824d5f2f3d2cae70813e.tar.gz
cbt-906db6c55289d9aba5da824d5f2f3d2cae70813e.tar.bz2
cbt-906db6c55289d9aba5da824d5f2f3d2cae70813e.zip
Improved how to express dependencies
Add - Constructor syntax for cross-scala-version dependencies (as rightfully requested on reddit) and encouraged over SBT's still supported operator syntax - Add support for classifiers other than "sources"
Diffstat (limited to 'stage1/Stage1Lib.scala')
-rw-r--r--stage1/Stage1Lib.scala30
1 files changed, 20 insertions, 10 deletions
diff --git a/stage1/Stage1Lib.scala b/stage1/Stage1Lib.scala
index 67ae049..90675ae 100644
--- a/stage1/Stage1Lib.scala
+++ b/stage1/Stage1Lib.scala
@@ -38,6 +38,9 @@ class BaseLib{
class Stage1Lib( val logger: Logger ) extends BaseLib{
lib =>
+ implicit val implicitLogger: Logger = logger
+
+ def scalaMajorVersion(scalaMinorVersion: String) = scalaMinorVersion.split("\\.").take(2).mkString(".")
// ========== reflection ==========
@@ -132,26 +135,26 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{
// only run zinc if files changed, for performance reasons
// FIXME: this is broken, need invalidate on changes in dependencies as well
if( true || needsRecompile ){
- val zinc = MavenDependency("com.typesafe.zinc","zinc", zincVersion)(logger)
+ val zinc = JavaDependency("com.typesafe.zinc","zinc", zincVersion)
val zincDeps = zinc.transitiveDependencies
-
+
val sbtInterface =
zincDeps
- .collect{ case d @ MavenDependency( "com.typesafe.sbt", "sbt-interface", _, false ) => d }
+ .collect{ case d @ JavaDependency( "com.typesafe.sbt", "sbt-interface", _, Classifier.none ) => d }
.headOption
- .getOrElse( throw new Exception(s"cannot find sbt-interface in zinc $zincVersion dependencies") )
+ .getOrElse( throw new Exception(s"cannot find sbt-interface in zinc $zincVersion dependencies: "++zincDeps.toString) )
.jar
val compilerInterface =
zincDeps
- .collect{ case d @ MavenDependency( "com.typesafe.sbt", "compiler-interface", _, true ) => d }
+ .collect{ case d @ JavaDependency( "com.typesafe.sbt", "compiler-interface", _, Classifier.sources ) => d }
.headOption
- .getOrElse( throw new Exception(s"cannot find compiler-interface in zinc $zincVersion dependencies") )
+ .getOrElse( throw new Exception(s"cannot find compiler-interface in zinc $zincVersion dependencies: "++zincDeps.toString) )
.jar
- val scalaLibrary = MavenDependency("org.scala-lang","scala-library",scalaVersion)(logger).jar
- val scalaReflect = MavenDependency("org.scala-lang","scala-reflect",scalaVersion)(logger).jar
- val scalaCompiler = MavenDependency("org.scala-lang","scala-compiler",scalaVersion)(logger).jar
+ val scalaLibrary = JavaDependency("org.scala-lang","scala-library",scalaVersion).jar
+ val scalaReflect = JavaDependency("org.scala-lang","scala-reflect",scalaVersion).jar
+ val scalaCompiler = JavaDependency("org.scala-lang","scala-compiler",scalaVersion).jar
val code = redirectOutToErr{
trapExitCode{
@@ -226,5 +229,12 @@ class Stage1Lib( val logger: Logger ) extends BaseLib{
code
ExitCode.Success
}
-}
+ def ScalaDependency(
+ groupId: String, artifactId: String, version: String, classifier: Classifier = Classifier.none,
+ scalaVersion: String
+ ) =
+ JavaDependency(
+ groupId, artifactId ++ "_" ++ scalaVersion, version, classifier
+ )
+}