From b282ea51d73a2bd3ec44f63330da41f429738880 Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Mon, 27 Feb 2017 14:31:28 +0000 Subject: [PATCH] Extract Act.taskKeyExtra --- main/src/main/scala/sbt/internal/Act.scala | 38 +++++++++++++--------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/main/src/main/scala/sbt/internal/Act.scala b/main/src/main/scala/sbt/internal/Act.scala index 6be991063..eb82de0b4 100644 --- a/main/src/main/scala/sbt/internal/Act.scala +++ b/main/src/main/scala/sbt/internal/Act.scala @@ -36,26 +36,34 @@ object Act { def scopedKeyFull(index: KeyIndex, current: ProjectRef, defaultConfigs: Option[ResolvedReference] => Seq[String], keyMap: Map[String, AttributeKey[_]]): Parser[Seq[Parser[ParsedKey]]] = { - def taskKeyExtra(proj: Option[ResolvedReference], confAmb: ParsedAxis[String], baseMask: ScopeMask): Seq[Parser[ParsedKey]] = - for { - conf <- configs(confAmb, defaultConfigs, proj, index) - } yield for { - taskAmb <- taskAxis(conf, index.tasks(proj, conf), keyMap) - task = resolveTask(taskAmb) - key <- key(index, proj, conf, task, keyMap) - extra <- extraAxis(keyMap, IMap.empty) - } yield { - val mask = baseMask.copy(task = taskAmb.isExplicit, extra = true) - new ParsedKey(makeScopedKey(proj, conf, task, extra, key), mask) - } - for { rawProject <- optProjectRef(index, current) proj = resolveProject(rawProject, current) confAmb <- config(index configs proj) partialMask = ScopeMask(rawProject.isExplicit, confAmb.isExplicit, false, false) - } yield taskKeyExtra(proj, confAmb, partialMask) + } yield taskKeyExtra(index, defaultConfigs, keyMap, proj, confAmb, partialMask) } + + def taskKeyExtra( + index: KeyIndex, + defaultConfigs: Option[ResolvedReference] => Seq[String], + keyMap: Map[String, AttributeKey[_]], + proj: Option[ResolvedReference], + confAmb: ParsedAxis[String], + baseMask: ScopeMask + ): Seq[Parser[ParsedKey]] = + for { + conf <- configs(confAmb, defaultConfigs, proj, index) + } yield for { + taskAmb <- taskAxis(conf, index.tasks(proj, conf), keyMap) + task = resolveTask(taskAmb) + key <- key(index, proj, conf, task, keyMap) + extra <- extraAxis(keyMap, IMap.empty) + } yield { + val mask = baseMask.copy(task = taskAmb.isExplicit, extra = true) + new ParsedKey(makeScopedKey(proj, conf, task, extra, key), mask) + } + def makeScopedKey(proj: Option[ResolvedReference], conf: Option[String], task: Option[AttributeKey[_]], extra: ScopeAxis[AttributeMap], key: AttributeKey[_]): ScopedKey[_] = ScopedKey(Scope(toAxis(proj, Global), toAxis(conf map ConfigKey.apply, Global), toAxis(task, Global), extra), key) @@ -309,4 +317,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) } -} \ No newline at end of file +}