aboutsummaryrefslogtreecommitdiff
path: root/stage1/resolver.scala
diff options
context:
space:
mode:
authorJan Christopher Vogt <oss.nsp@cvogt.org>2016-03-12 19:48:10 -0500
committerJan Christopher Vogt <oss.nsp@cvogt.org>2016-03-12 19:48:10 -0500
commit084f9d75bfbb38649367ce680a77ba6e6a5b1b5d (patch)
treeb6f20b7ff5c6db419e14b5ff2ee2703167303704 /stage1/resolver.scala
parent69c48dd8b1df58f6a56faa0e98411cb14e383c52 (diff)
parent906db6c55289d9aba5da824d5f2f3d2cae70813e (diff)
downloadcbt-084f9d75bfbb38649367ce680a77ba6e6a5b1b5d.tar.gz
cbt-084f9d75bfbb38649367ce680a77ba6e6a5b1b5d.tar.bz2
cbt-084f9d75bfbb38649367ce680a77ba6e6a5b1b5d.zip
Merge pull request #84 from cvogt/dependency-syntax
Improved how to express dependencies
Diffstat (limited to 'stage1/resolver.scala')
-rw-r--r--stage1/resolver.scala57
1 files changed, 32 insertions, 25 deletions
diff --git a/stage1/resolver.scala b/stage1/resolver.scala
index 566b37d..39dc0eb 100644
--- a/stage1/resolver.scala
+++ b/stage1/resolver.scala
@@ -134,7 +134,7 @@ abstract class Dependency{
case _:ArtifactInfo => false
case _ => true
}
- noInfo ++ MavenDependency.removeOutdated( hasInfo )
+ noInfo ++ JavaDependency.removeOutdated( hasInfo )
}
def show: String = this.getClass.getSimpleName
@@ -150,9 +150,9 @@ abstract class Dependency{
}
// TODO: all this hard codes the scala version, needs more flexibility
-class ScalaCompilerDependency(version: String)(implicit logger: Logger) extends MavenDependency("org.scala-lang","scala-compiler",version)
-class ScalaLibraryDependency (version: String)(implicit logger: Logger) extends MavenDependency("org.scala-lang","scala-library",version)
-class ScalaReflectDependency (version: String)(implicit logger: Logger) extends MavenDependency("org.scala-lang","scala-reflect",version)
+class ScalaCompilerDependency(version: String)(implicit logger: Logger) extends JavaDependency("org.scala-lang","scala-compiler",version)
+class ScalaLibraryDependency (version: String)(implicit logger: Logger) extends JavaDependency("org.scala-lang","scala-library",version)
+class ScalaReflectDependency (version: String)(implicit logger: Logger) extends JavaDependency("org.scala-lang","scala-reflect",version)
case class ScalaDependencies(version: String)(implicit val logger: Logger) extends Dependency{ sd =>
final val updated = false
@@ -160,9 +160,9 @@ case class ScalaDependencies(version: String)(implicit val logger: Logger) exten
def exportedClasspath = ClassPath(Seq())
def exportedJars = Seq[File]()
def dependencies = Seq(
- new ScalaCompilerDependency(version)(logger),
- new ScalaLibraryDependency(version)(logger),
- new ScalaReflectDependency(version)(logger)
+ new ScalaCompilerDependency(version),
+ new ScalaLibraryDependency(version),
+ new ScalaReflectDependency(version)
)
}
@@ -182,27 +182,34 @@ case class CbtDependency()(implicit val logger: Logger) extends Dependency{
def exportedClasspath = ClassPath( Seq( stage2Target ) )
def exportedJars = Seq[File]()
override def dependencies = Seq(
- Stage1Dependency()(logger),
- MavenDependency("net.incongru.watchservice","barbary-watchservice","1.0")(logger),
- MavenDependency("com.lihaoyi","ammonite-repl_2.11.7","0.5.5")(logger),
- MavenDependency("org.scala-lang.modules","scala-xml_2.11","1.0.5")(logger)
+ Stage1Dependency(),
+ JavaDependency("net.incongru.watchservice","barbary-watchservice","1.0"),
+ lib.ScalaDependency(
+ "com.lihaoyi","ammonite-ops","0.5.5", scalaVersion = constants.scalaMajorVersion
+ ),
+ lib.ScalaDependency(
+ "org.scala-lang.modules","scala-xml","1.0.5", scalaVersion = constants.scalaMajorVersion
+ )
)
def updated = false // FIXME: think this through, might allow simplifications and/or optimizations
}
-sealed trait ClassifierBase
-final case class Classifier(name: String) extends ClassifierBase
-case object javadoc extends ClassifierBase
-case object sources extends ClassifierBase
+case class Classifier(name: Option[String])
+object Classifier{
+ object none extends Classifier(None)
+ object javadoc extends Classifier(Some("javadoc"))
+ object sources extends Classifier(Some("sources"))
+}
-case class MavenDependency( groupId: String, artifactId: String, version: String, sources: Boolean = false )(implicit val logger: Logger)
- extends ArtifactInfo{
+case class JavaDependency(
+ groupId: String, artifactId: String, version: String, classifier: Classifier = Classifier.none
+)(implicit val logger: Logger) extends ArtifactInfo{
def updated = false
override def canBeCached = true
private val groupPath = groupId.split("\\.").mkString("/")
- def basePath = s"/$groupPath/$artifactId/$version/$artifactId-$version"++(if(sources) "-sources" else "")
+ def basePath = s"/$groupPath/$artifactId/$version/$artifactId-$version" ++ classifier.name.map("-"++_).getOrElse("")
private def resolverUrl:URL = new URL(
if(version.endsWith("-SNAPSHOT")) "https://oss.sonatype.org/content/repositories/snapshots" else "https://repo1.maven.org/maven2"
@@ -251,25 +258,25 @@ case class MavenDependency( groupId: String, artifactId: String, version: String
// ========== pom traversal ==========
- lazy val pomParents: Seq[MavenDependency] = {
+ lazy val pomParents: Seq[JavaDependency] = {
(pomXml \ "parent").collect{
case parent =>
- MavenDependency(
+ JavaDependency(
(parent \ "groupId").text,
(parent \ "artifactId").text,
(parent \ "version").text
)(logger)
}
}
- def dependencies: Seq[MavenDependency] = {
- if(sources) Seq()
+ def dependencies: Seq[JavaDependency] = {
+ if(classifier == Classifier.sources) Seq()
else (pomXml \ "dependencies" \ "dependency").collect{
case xml if (xml \ "scope").text == "" && (xml \ "optional").text != "true" =>
- MavenDependency(
+ JavaDependency(
lookup(xml,_ \ "groupId").get,
lookup(xml,_ \ "artifactId").get,
lookup(xml,_ \ "version").get,
- (xml \ "classifier").text == "sources"
+ Classifier( Some( (xml \ "classifier").text ).filterNot(_ == "").filterNot(_ == null) )
)(logger)
}.toVector
}
@@ -289,7 +296,7 @@ case class MavenDependency( groupId: String, artifactId: String, version: String
)
}
}
-object MavenDependency{
+object JavaDependency{
def semanticVersionLessThan(left: String, right: String) = {
// FIXME: this ignores ends when different size
val zipped = left.split("\\.|\\-").map(toInt) zip right.split("\\.|\\-").map(toInt)