Merge pull request #2708 from Duhemm/wip/fix-2707

Fix key selection for build level keys
This commit is contained in:
eugene yokota 2016-08-26 01:06:32 -04:00 committed by GitHub
commit 239549617b
3 changed files with 25 additions and 5 deletions

View File

@ -77,11 +77,16 @@ object Act {
selectFromValid(ss filter isValid(data), default)
}
def selectFromValid(ss: Seq[ParsedKey], default: Parser[ParsedKey])(implicit show: Show[ScopedKey[_]]): Parser[ParsedKey] =
selectByTask(selectByConfig(ss)) match {
case Seq() => default
case Seq(single) => success(single)
case multi => failure("Ambiguous keys: " + showAmbiguous(keys(multi)))
selectByTask(selectByConfig(ss)) partition isBuildKey match {
case (_, Seq(single)) => success(single)
case (Seq(single), Seq()) => success(single)
case (Seq(), Seq()) => default
case (buildKeys, projectKeys) => failure("Ambiguous keys: " + showAmbiguous(keys(buildKeys ++ projectKeys)))
}
private def isBuildKey(parsed: ParsedKey): Boolean = parsed.key.scope.project match {
case Select(_: BuildReference) => true
case _ => false
}
private[this] def keys(ss: Seq[ParsedKey]): Seq[ScopedKey[_]] = ss.map(_.key)
def selectByConfig(ss: Seq[ParsedKey]): Seq[ParsedKey] =
ss match {
@ -310,4 +315,4 @@ object Act {
final object Omitted extends ParsedAxis[Nothing]
final class ParsedValue[T](val value: T) extends ParsedAxis[T]
def value[T](t: Parser[T]): Parser[ParsedAxis[T]] = t map { v => new ParsedValue(v) }
}
}

View File

@ -0,0 +1,11 @@
[@Duhemm]: https://github.com/Duhemm
[#2707]: https://github.com/sbt/sbt/issues/2707
[#2708]: https://github.com/sbt/sbt/issues/2708
### Fixes with compatibility implications
### Improvements
### Bug fixes
- Fix key selection for build level keys. sbt wrongly reported some keys as ambiguous. Fixes [#2707][#2707]. [#2708][#2708] by [@Duhemm][@Duhemm]

View File

@ -0,0 +1,4 @@
> baseDirectory
> {.}/baseDirectory