From 323dd568b61a49c0ac17dbf3ad50098e82c2989b Mon Sep 17 00:00:00 2001 From: Christopher Vogt Date: Tue, 3 May 2016 00:45:50 +0300 Subject: Convenience factory methods for Resolvers --- stage2/BasicBuild.scala | 7 ++++--- stage2/SbtDependencyDsl.scala | 28 ---------------------------- stage2/Scaffold.scala | 37 +++++++++++++++++++++++++++---------- stage2/ToolsTasks.scala | 23 ++++++++++++----------- 4 files changed, 43 insertions(+), 52 deletions(-) (limited to 'stage2') diff --git a/stage2/BasicBuild.scala b/stage2/BasicBuild.scala index fb5e652..4ae4cd1 100644 --- a/stage2/BasicBuild.scala +++ b/stage2/BasicBuild.scala @@ -47,12 +47,11 @@ class BasicBuild(val context: Context) extends DependencyImplementation with Bui def copy(context: Context): BuildInterface = lib.copy(this.getClass, context).asInstanceOf[BuildInterface] def zincVersion = "0.3.9" - def dependencies: Seq[Dependency] = Seq( + def dependencies: Seq[Dependency] = // FIXME: this should probably be removed - MavenResolver(context.cbtHasChanged, context.paths.mavenCache, MavenResolver.central).resolve( + Resolver( mavenCentral ).bind( "org.scala-lang" % "scala-library" % scalaVersion ) - ) // ========== paths ========== final private val defaultSourceDirectory = projectDirectory ++ "/src" @@ -92,6 +91,8 @@ class BasicBuild(val context: Context) extends DependencyImplementation with Bui } assertSourceDirectories() + def Resolver( urls: URL* ) = MavenResolver( context.cbtHasChanged, context.paths.mavenCache, urls: _* ) + def ScalaDependency( groupId: String, artifactId: String, version: String, classifier: Classifier = Classifier.none, scalaVersion: String = scalaMajorVersion diff --git a/stage2/SbtDependencyDsl.scala b/stage2/SbtDependencyDsl.scala index d8c0786..4c95308 100644 --- a/stage2/SbtDependencyDsl.scala +++ b/stage2/SbtDependencyDsl.scala @@ -12,32 +12,4 @@ trait SbtDependencyDsl{ self: BasicBuild => def %%(artifactId: String) = new DependencyBuilder2( groupId, artifactId, Some(scalaMajorVersion) ) def %(artifactId: String) = new DependencyBuilder2( groupId, artifactId, None ) } - implicit class DependencyBuilder3(d: MavenDependency){ - def %(classifier: String): MavenDependency = d//.copy(classifier = Classifier(Some(classifier))) - } - - /* - /** SBT-like dependency builder DSL for syntax compatibility */ - implicit class DependencyBuilder0(repository: Maven){ - def %(groupId: String) = new DependencyBuilder1b(repository, groupId) - } - implicit class DependencyBuilder1a(groupId: String){ - def %%(artifactId: String) = new DependencyBuilder2( Maven.central, groupId, artifactId, Some(scalaMajorVersion) ) - def %(artifactId: String) = new DependencyBuilder2( Maven.central, groupId, artifactId, None ) - } - class DependencyBuilder1b(repository: Maven, groupId: String){ - def %%(artifactId: String) = new DependencyBuilder2( repository, groupId, artifactId, Some(scalaMajorVersion) ) - def %(artifactId: String) = new DependencyBuilder2( repository, groupId, artifactId, None ) - } - class DependencyBuilder2( repository: Maven, groupId: String, artifactId: String, scalaMajorVersion: Option[String] ){ - def %(version: String) = scalaMajorVersion.map( - v => repository(groupId, artifactId, version, scalaMajorVersion = v) - ).getOrElse( - repository.java(groupId, artifactId, version) - ) - } - implicit class DependencyBuilder3(d: MavenDependency){ - def %(classifier: String) = d.copy(classifier = Classifier(Some(classifier))) - } - */ } \ No newline at end of file diff --git a/stage2/Scaffold.scala b/stage2/Scaffold.scala index 407fee1..6c66b04 100644 --- a/stage2/Scaffold.scala +++ b/stage2/Scaffold.scala @@ -13,7 +13,7 @@ trait Scaffold{ println( GREEN ++ "Created " ++ fileName ++ RESET ) } - def scaffoldBasicBuild( + def createBasicBuild( projectDirectory: File ): Unit = { createFile(projectDirectory, "build/build.scala", s"""import cbt._ @@ -23,11 +23,17 @@ import scala.collection.immutable.Seq class Build(context: Context) extends BasicBuild(context){ override def dependencies = { // don't forget super.dependencies here - super.dependencies :+ MavenResolver(context.cbtHasChanged,context.paths.mavenCache,MavenResolver.central).resolve( - MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0"), - MavenDependency("org.eclipse.jgit", "org.eclipse.jgit", "4.2.0.201601211800-r"), - MavenDependency("com.typesafe.zinc","zinc","0.3.9"), - ScalaDependency("org.scala-lang.modules","scala-xml","1.0.5") + super.dependencies ++ Resolver( mavenCentral ).bind( + /* + // Scala dependency automatically adding Scala major version to artifact id + ScalaDependency("com.lihaoyi", "ammonite-ops", "0.5.5") + // SBT-style Scala dependency + "com.lihaoyi" %% "ammonite-ops" % "0.5.5" + // Java dependency directly corresponding to maven artifact id + MavenDependency("com.lihaoyi", "ammonite-ops_2.11", "0.5.5") + // SBT-style Java dependency + "com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5" + */ ) } } @@ -36,7 +42,7 @@ class Build(context: Context) extends BasicBuild(context){ } - def scaffoldBuildBuild( + def createBuildBuild( projectDirectory: File ): Unit = { createFile(projectDirectory, "build/build/build.scala", s"""import cbt._ @@ -45,9 +51,20 @@ import java.io.File import scala.collection.immutable.Seq class Build(context: Context) extends BuildBuild(context){ - override def dependencies = super.dependencies ++ Seq( - // , "com.lihaoyi" %% "ammonite-ops" % "0.5.5" - ) + override def dependencies = { // don't forget super.dependencies here + super.dependencies ++ Resolver( mavenCentral ).bind( + /* + // Scala dependency automatically adding Scala major version to artifact id + ScalaDependency("com.lihaoyi", "ammonite-ops", "0.5.5") + // SBT-style Scala dependency + "com.lihaoyi" %% "ammonite-ops" % "0.5.5" + // Java dependency directly corresponding to maven artifact id + MavenDependency("com.lihaoyi", "ammonite-ops_2.11", "0.5.5") + // SBT-style Java dependency + "com.lihaoyi" % "ammonite-ops_2.11" % "0.5.5" + */ + ) + } } """ ) diff --git a/stage2/ToolsTasks.scala b/stage2/ToolsTasks.scala index 46f1336..5afbac0 100644 --- a/stage2/ToolsTasks.scala +++ b/stage2/ToolsTasks.scala @@ -1,5 +1,6 @@ package cbt import scala.collection.immutable.Seq +import java.net._ import java.io.{Console=>_,_} import java.nio.file._ class ToolsTasks( @@ -13,14 +14,16 @@ class ToolsTasks( ){ private val paths = CbtPaths(cbtHome, cache) import paths._ - private val mavenCentral = MavenResolver(cbtHasChanged,mavenCache,MavenResolver.central) + private def Resolver( urls: URL* ) = MavenResolver(cbtHasChanged,mavenCache,urls: _*) implicit val logger: Logger = lib.logger + def createBasicBuild: Unit = lib.createBasicBuild( cwd ) + def createBuildBuild: Unit = lib.createBuildBuild( cwd ) def resolve = { ClassPath.flatten( args(1).split(",").toVector.map{ d => val v = d.split(":") - mavenCentral.resolveOne(MavenDependency(v(0),v(1),v(2))).classpath + Resolver(mavenCentral).bindOne(MavenDependency(v(0),v(1),v(2))).classpath } ) } @@ -28,14 +31,14 @@ class ToolsTasks( args(1).split(",").toVector.map{ d => val v = d.split(":") - mavenCentral.resolveOne(MavenDependency(v(0),v(1),v(2))).dependencyTree + Resolver(mavenCentral).bindOne(MavenDependency(v(0),v(1),v(2))).dependencyTree }.mkString("\n\n") } def amm = ammonite def ammonite = { val version = args.lift(1).getOrElse(constants.scalaVersion) val scalac = new ScalaCompilerDependency( cbtHasChanged,mavenCache, version ) - val d = mavenCentral.resolveOne( + val d = Resolver(mavenCentral).bindOne( MavenDependency( "com.lihaoyi","ammonite-repl_2.11.7",args.lift(1).getOrElse("0.5.7") ) @@ -52,24 +55,22 @@ class ToolsTasks( "scala.tools.nsc.MainGenericRunner", Seq("-cp", scalac.classpath.string), scalac.classLoader(classLoaderCache) ) } - def scaffoldBasicBuild: Unit = lib.scaffoldBasicBuild( cwd ) - def scaffoldBuildBuild: Unit = lib.scaffoldBuildBuild( cwd ) def cbtEarlyDependencies = { val scalaVersion = args.lift(1).getOrElse(constants.scalaVersion) val scalaMajorVersion = scalaVersion.split("\\.").take(2).mkString(".") val scalaXmlVersion = args.lift(2).getOrElse(constants.scalaXmlVersion) val zincVersion = args.lift(3).getOrElse(constants.zincVersion) val scalaDeps = Seq( - mavenCentral.resolveOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)), - mavenCentral.resolveOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion)) + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-reflect",scalaVersion)), + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-compiler",scalaVersion)) ) val scalaXml = Dependencies( - mavenCentral.resolveOne(MavenDependency("org.scala-lang.modules","scala-xml_"+scalaMajorVersion,scalaXmlVersion)), - mavenCentral.resolveOne(MavenDependency("org.scala-lang","scala-library",scalaVersion)) + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang.modules","scala-xml_"+scalaMajorVersion,scalaXmlVersion)), + Resolver(mavenCentral).bindOne(MavenDependency("org.scala-lang","scala-library",scalaVersion)) ) - val zinc = mavenCentral.resolveOne(MavenDependency("com.typesafe.zinc","zinc",zincVersion)) + val zinc = Resolver(mavenCentral).bindOne(MavenDependency("com.typesafe.zinc","zinc",zincVersion)) def valName(dep: BoundMavenDependency) = { val words = dep.artifactId.split("_").head.split("-") -- cgit v1.2.3