From 32d293c7946a68d9f3f7fd4baf856a3b8c19f5ce Mon Sep 17 00:00:00 2001 From: dmharrah Date: Sun, 27 Sep 2009 00:04:22 +0000 Subject: [PATCH] Make Patterns construction simpler git-svn-id: https://simple-build-tool.googlecode.com/svn/trunk@1055 d89573ee-9141-11dd-94d4-bdf5e562f29c --- src/main/scala/sbt/BasicProjectTypes.scala | 2 +- src/main/scala/sbt/ManagedInterface.scala | 20 ++++++++++++------- src/main/scala/sbt/impl/ConvertResolver.scala | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/main/scala/sbt/BasicProjectTypes.scala b/src/main/scala/sbt/BasicProjectTypes.scala index 5c2817380..19ee35cd3 100644 --- a/src/main/scala/sbt/BasicProjectTypes.scala +++ b/src/main/scala/sbt/BasicProjectTypes.scala @@ -267,7 +267,7 @@ trait BasicManagedProject extends ManagedProject with ReflectiveManagedProject w case Some(m: BasicManagedProject) => m.managedStyle case _ => Auto } - protected implicit final val defaultPatterns: RepositoryHelpers.Patterns = + protected implicit final val defaultPatterns: Patterns = { managedStyle match { diff --git a/src/main/scala/sbt/ManagedInterface.scala b/src/main/scala/sbt/ManagedInterface.scala index ac8278351..3e46cfd27 100644 --- a/src/main/scala/sbt/ManagedInterface.scala +++ b/src/main/scala/sbt/ManagedInterface.scala @@ -96,14 +96,20 @@ sealed case class MavenRepository(name: String, root: String) extends Resolver override def toString = name + ": " + root } +final class Patterns(val ivyPatterns: Seq[String], val artifactPatterns: Seq[String], val isMavenCompatible: Boolean) extends NotNull +{ + private[sbt] def mavenStyle(): Patterns = Patterns(ivyPatterns, artifactPatterns, true) + private[sbt] def withIvys(patterns: Seq[String]): Patterns = Patterns(patterns ++ ivyPatterns, artifactPatterns, isMavenCompatible) + private[sbt] def withArtifacts(patterns: Seq[String]): Patterns = Patterns(ivyPatterns, patterns ++ artifactPatterns, isMavenCompatible) +} +object Patterns +{ + def apply(artifactPatterns: String*): Patterns = Patterns(true, artifactPatterns : _*) + def apply(isMavenCompatible: Boolean, artifactPatterns: String*): Patterns = Patterns(Nil, artifactPatterns, isMavenCompatible) + def apply(ivyPatterns: Seq[String], artifactPatterns: Seq[String], isMavenCompatible: Boolean): Patterns = new Patterns(ivyPatterns, artifactPatterns, isMavenCompatible) +} object RepositoryHelpers { - final case class Patterns(ivyPatterns: Seq[String], artifactPatterns: Seq[String], isMavenCompatible: Boolean) extends NotNull - { - private[sbt] def mavenStyle(): Patterns = Patterns(ivyPatterns, artifactPatterns, true) - private[sbt] def withIvys(patterns: Seq[String]): Patterns = Patterns(patterns ++ ivyPatterns, artifactPatterns, isMavenCompatible) - private[sbt] def withArtifacts(patterns: Seq[String]): Patterns = Patterns(ivyPatterns, patterns ++ artifactPatterns, isMavenCompatible) - } final case class SshConnection(authentication: Option[SshAuthentication], hostname: Option[String], port: Option[Int]) extends NotNull { def copy(authentication: Option[SshAuthentication]) = SshConnection(authentication, hostname, port) @@ -119,7 +125,7 @@ object RepositoryHelpers final case class PasswordAuthentication(user: String, password: String) extends SshAuthentication final case class KeyFileAuthentication(keyfile: File, password: String) extends SshAuthentication } -import RepositoryHelpers.{Patterns, SshConnection, FileConfiguration} +import RepositoryHelpers.{SshConnection, FileConfiguration} import RepositoryHelpers.{KeyFileAuthentication, PasswordAuthentication, SshAuthentication} /** sbt interface to an Ivy repository based on patterns, which is most Ivy repositories.*/ diff --git a/src/main/scala/sbt/impl/ConvertResolver.scala b/src/main/scala/sbt/impl/ConvertResolver.scala index 4bfe0b014..1d9ec9414 100644 --- a/src/main/scala/sbt/impl/ConvertResolver.scala +++ b/src/main/scala/sbt/impl/ConvertResolver.scala @@ -91,7 +91,7 @@ private object ConvertResolver setKeyFilePassword(password) } } - private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: RepositoryHelpers.Patterns) + private def initializePatterns(resolver: AbstractPatternsBasedResolver, patterns: Patterns) { resolver.setM2compatible(patterns.isMavenCompatible) patterns.ivyPatterns.foreach(resolver.addIvyPattern)