From 6f0028e50dafe8e4db3a0317fe9fd1025b32f729 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Sun, 23 Jun 2013 19:57:30 -0400 Subject: [PATCH] Use last path component of a URI in the staged path. --- main/src/main/scala/sbt/Resolvers.scala | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/Resolvers.scala b/main/src/main/scala/sbt/Resolvers.scala index b9bb2a0f0..c63ea0858 100644 --- a/main/src/main/scala/sbt/Resolvers.scala +++ b/main/src/main/scala/sbt/Resolvers.scala @@ -148,6 +148,19 @@ object Resolvers def uniqueSubdirectoryFor(uri: URI, in: File) = { in.mkdirs() - new File(in, Hash.halfHashString(uri.normalize.toASCIIString)) + val base = new File(in, Hash.halfHashString(uri.normalize.toASCIIString)) + val last = shortName(uri) match { case Some(n) => normalizeDirectoryName(n); case None => "root" } + new File(base, last) } + + private[this] def shortName(uri: URI): Option[String] = + Option(uri.withoutMarkerScheme.getPath).flatMap { + _.split("/").map(_.trim).filterNot(_.isEmpty).lastOption + } + + private[this] def normalizeDirectoryName(name: String): String = + StringUtilities.normalize(dropExtensions(name)) + + private[this] def dropExtensions(name: String): String = name.takeWhile(_ != '.') + }