From af6b420083e87b0e53804f9285c484ac0aab1ce7 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Fri, 29 Jul 2011 23:33:10 -0400 Subject: [PATCH] fix automatic artifact configuration selection for non-standard scope configurations --- main/Defaults.scala | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/main/Defaults.scala b/main/Defaults.scala index 0cdfd519b..08472c9c3 100644 --- a/main/Defaults.scala +++ b/main/Defaults.scala @@ -329,7 +329,23 @@ object Defaults extends BuildCommon (dirs, filter, excludes) map { (d,f,excl) => d.descendentsExcept(f,excl).get } def artifactPathSetting(art: ScopedSetting[Artifact]) = (crossTarget, projectID, art, scalaVersion in artifactName, artifactName) { (t, module, a, sv, toString) => t / toString(sv, module, a) asFile } - + def artifactSetting = (artifact, artifactClassifier, configuration) { (a,classifier,c) => + val cPart = if(c == Compile) Nil else c.name :: Nil + val combined = cPart ++ classifier.toList + if(combined.isEmpty) a.copy(classifier = None, configurations = c :: Nil) else { + val classifierString = combined mkString "-" + val confs = artifactConfigurations(a, c, classifier) + a.copy(classifier = Some(classifierString), `type` = Artifact.classifierType(classifierString), configurations = confs) + } + } + def artifactConfigurations(base: Artifact, scope: Configuration, classifier: Option[String]): Iterable[Configuration] = + if(base.configurations.isEmpty) + classifier match { + case Some(c) => Artifact.classifierConf(c) :: Nil + case None => scope :: Nil + } + else + base.configurations def pairID[A,B] = (a: A, b: B) => (a,b) def packageTasks(key: TaskKey[File], mappingsTask: Initialize[Task[Seq[(File,String)]]]) = inTask(key)( Seq( @@ -337,15 +353,7 @@ object Defaults extends BuildCommon packageConfiguration <<= packageConfigurationTask, mappings <<= mappingsTask, packagedArtifact <<= (artifact, key) map pairID, - artifact <<= (artifact, artifactClassifier, configuration) { (a,classifier,c) => - val cPart = if(c == Compile) Nil else c.name :: Nil - val combined = cPart ++ classifier.toList - if(combined.isEmpty) a.copy(classifier = None, configurations = c :: Nil) else { - val classifier = combined mkString "-" - val confs = if(a.configurations.isEmpty) Artifact.classifierConf(classifier) :: Nil else a.configurations - a.copy(classifier = Some(classifier), `type` = Artifact.classifierType(classifier), configurations = confs) - } - }, + artifact <<= artifactSetting, cacheDirectory <<= cacheDirectory / key.key.label, artifactPath <<= artifactPathSetting(artifact) ))