Accept both 1.x and x for 1.1 to 1.8

This commit is contained in:
Eugene Yokota 2018-05-03 00:59:27 -04:00
parent c31583e4f8
commit aff9e0110c
3 changed files with 14 additions and 4 deletions

View File

@ -160,9 +160,9 @@ object Defaults extends BuildCommon {
scalaHome :== None,
apiURL := None,
javaHome :== None,
discoveredJavaHomes := sbt.internal.CrossJava.discoverJavaHomes,
discoveredJavaHomes := CrossJava.discoverJavaHomes,
javaHomes :== ListMap.empty,
fullJavaHomes := discoveredJavaHomes.value ++ javaHomes.value,
fullJavaHomes := CrossJava.expandJavaHomes(discoveredJavaHomes.value ++ javaHomes.value),
testForkedParallel :== false,
javaOptions :== Nil,
sbtPlugin :== false,

View File

@ -10,7 +10,6 @@ package internal
import java.io.File
import scala.collection.immutable.ListMap
import sbt.io.IO
import sbt.io.syntax._
private[sbt] object CrossJava {
@ -44,6 +43,17 @@ private[sbt] object CrossJava {
}
}
// expand Java versions to 1-8 to 1.x, and vice versa to accept both "1.8" and "8"
private val oneDot = Map((1 to 8).toVector flatMap { i =>
Vector(s"$i" -> s"1.$i", s"1.$i" -> s"$i")
}: _*)
def expandJavaHomes(hs: Map[JavaVersion, File]): Map[JavaVersion, File] =
hs flatMap {
case (k, v) =>
if (oneDot.contains(k.version)) Vector(k -> v, k.withVersion(oneDot(k.version)) -> v)
else Vector(k -> v)
}
def wrapNull(a: Array[String]): Vector[String] =
if (a eq null) Vector()
else a.toVector

View File

@ -1,5 +1,5 @@
Global / javaHomes += JavaVersion("6") -> file("/good/old/times/java-6")
TaskKey[Unit]("check") := {
assert(fullJavaHomes.value(JavaVersion("6")).getAbsolutePath.contains("java-6"))
assert(fullJavaHomes.value(JavaVersion("1.6")).getAbsolutePath.contains("java-6"))
}