mirror of https://github.com/sbt/sbt.git
Allow custom show for a scope
I am writing a plugin that uses mangled task keys that are very hard to read. It is helpful to be able to override the show config for these scopes so that they look reasonable in supershell and in error reporting.
This commit is contained in:
parent
4030a6434d
commit
8fbf1907ce
|
|
@ -54,12 +54,14 @@ object Def extends Init[Scope] with TaskMacroExtra {
|
|||
keyNameColor: Option[String] = None,
|
||||
): Show[ScopedKey[_]] =
|
||||
Show[ScopedKey[_]](
|
||||
key =>
|
||||
Scope.display(
|
||||
key.scope,
|
||||
withColor(key.key.label, keyNameColor),
|
||||
ref => displayRelative2(current, ref)
|
||||
)
|
||||
key => {
|
||||
val color: String => String = withColor(_, keyNameColor)
|
||||
key.scope.extra.toOption
|
||||
.flatMap(_.get(Scope.customShowString).map(color))
|
||||
.getOrElse {
|
||||
Scope.display(key.scope, color(key.key.label), ref => displayRelative2(current, ref))
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
private[sbt] def showShortKey(
|
||||
|
|
|
|||
|
|
@ -178,6 +178,8 @@ object Scope {
|
|||
): String =
|
||||
displayMasked(scope, sep, showProject, mask, false)
|
||||
|
||||
val customShowString = AttributeKey[String]("scope-custom-show-string")
|
||||
|
||||
/**
|
||||
* unified slash style introduced in sbt 1.1.0.
|
||||
* By default, sbt will no longer display the Zero-config,
|
||||
|
|
@ -193,20 +195,22 @@ object Scope {
|
|||
showZeroConfig: Boolean
|
||||
): String = {
|
||||
import scope.{ project, config, task, extra }
|
||||
val zeroConfig = if (showZeroConfig) "Zero /" else ""
|
||||
val configPrefix = config.foldStrict(display, zeroConfig, "./")
|
||||
val taskPrefix = task.foldStrict(_.label + " /", "", "./")
|
||||
val extras = extra.foldStrict(_.entries.map(_.toString).toList, Nil, Nil)
|
||||
val postfix = if (extras.isEmpty) "" else extras.mkString("(", ", ", ")")
|
||||
if (scope == GlobalScope) "Global / " + sep + postfix
|
||||
else
|
||||
mask.concatShow(
|
||||
appendSpace(projectPrefix(project, showProject)),
|
||||
appendSpace(configPrefix),
|
||||
appendSpace(taskPrefix),
|
||||
sep,
|
||||
postfix
|
||||
)
|
||||
extra.toOption.flatMap(_.get(customShowString)).getOrElse {
|
||||
val zeroConfig = if (showZeroConfig) "Zero /" else ""
|
||||
val configPrefix = config.foldStrict(display, zeroConfig, "./")
|
||||
val taskPrefix = task.foldStrict(_.label + " /", "", "./")
|
||||
val extras = extra.foldStrict(_.entries.map(_.toString).toList, Nil, Nil)
|
||||
val postfix = if (extras.isEmpty) "" else extras.mkString("(", ", ", ")")
|
||||
if (scope == GlobalScope) "Global / " + sep + postfix
|
||||
else
|
||||
mask.concatShow(
|
||||
appendSpace(projectPrefix(project, showProject)),
|
||||
appendSpace(configPrefix),
|
||||
appendSpace(taskPrefix),
|
||||
sep,
|
||||
postfix
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private[sbt] def appendSpace(s: String): String =
|
||||
|
|
|
|||
Loading…
Reference in New Issue