diff --git a/src/main/scala/explicitdeps/BoringStuff.scala b/src/main/scala/explicitdeps/BoringStuff.scala index 4436862..399a4b7 100644 --- a/src/main/scala/explicitdeps/BoringStuff.scala +++ b/src/main/scala/explicitdeps/BoringStuff.scala @@ -65,7 +65,12 @@ object BoringStuff { val rawName = (xml \ "artifactId").text // We use the parent dir to get the version because it's sometimes not present in the pom file - val version = file.getParentFile.getName + // We use URL decoder to cater for characters that are valid in version strings but encoded + // in the file path, such as "+" used for semver metadata, encoded as "%2B" + val version = java.net.URLDecoder.decode( + file.getParentFile.getName, + java.nio.charset.Charset.forName("utf8") + ) val (name, crossVersion) = parseModuleName(scalaVersion)(rawName) diff --git a/src/sbt-test/basic/semver-metadata/build.sbt b/src/sbt-test/basic/semver-metadata/build.sbt new file mode 100644 index 0000000..6724785 --- /dev/null +++ b/src/sbt-test/basic/semver-metadata/build.sbt @@ -0,0 +1,5 @@ +scalaVersion := sys.props("scala.version") +resolvers ++= Seq("Sonatype OSS Snapshots" at "https://oss.sonatype.org/content/repositories/snapshots") +libraryDependencies ++= Seq( + "org.scalaz" %% "scalaz-core" % "7.2.27+33-04a1ea9e-SNAPSHOT" +) diff --git a/src/sbt-test/basic/semver-metadata/project/plugins.sbt b/src/sbt-test/basic/semver-metadata/project/plugins.sbt new file mode 100644 index 0000000..40f24a3 --- /dev/null +++ b/src/sbt-test/basic/semver-metadata/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("com.github.cb372" % "sbt-explicit-dependencies" % sys.props("plugin.version")) diff --git a/src/sbt-test/basic/semver-metadata/src/main/scala/Main.scala b/src/sbt-test/basic/semver-metadata/src/main/scala/Main.scala new file mode 100644 index 0000000..132b030 --- /dev/null +++ b/src/sbt-test/basic/semver-metadata/src/main/scala/Main.scala @@ -0,0 +1,10 @@ +import scalaz._ +import scalaz.std.anyVal._ +import scalaz.std.list._ +import scalaz.std.option._ +import scalaz.syntax.equal._ + +object Main { + val list1: List[Option[Int]] = List(Some(1), Some(2), Some(3), Some(4)) + assert(Traverse[List].sequence(list1) === Some(List(1,2,3,4))) +} diff --git a/src/sbt-test/basic/semver-metadata/test b/src/sbt-test/basic/semver-metadata/test new file mode 100644 index 0000000..a465c04 --- /dev/null +++ b/src/sbt-test/basic/semver-metadata/test @@ -0,0 +1,2 @@ +> unusedCompileDependenciesTest +> undeclaredCompileDependenciesTest