Merge pull request #5932 from aaabramov/feature/3212/new-plugins-view

Brings new `plugins` command output message as per #3212
This commit is contained in:
eugene yokota 2020-10-11 13:19:16 -04:00 committed by GitHub
commit d0b8cf0984
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 29 additions and 12 deletions

View File

@ -121,18 +121,35 @@ private[sbt] object PluginsDebug {
if (Project.isProjectLoaded(s)) { if (Project.isProjectLoaded(s)) {
val extracted = Project.extract(s) val extracted = Project.extract(s)
import extracted._ import extracted._
def helpBuild(uri: URI, build: LoadedBuildUnit): String = {
val pluginStrings = for (plugin <- availableAutoPlugins(build)) yield { def helpBuild(build: LoadedBuildUnit): String =
val activatedIn = build.projects.toList
build.projects.toList.filter(_.autoPlugins.contains(plugin)).map(_.id) .sortBy(_.id)
val actString = .map { p =>
if (activatedIn.nonEmpty) activatedIn.mkString(": enabled in ", ", ", "") import p.autoPlugins
else "" // TODO: deal with large builds val `s?` = if (autoPlugins.length > 1) "s" else ""
s"\n\t${plugin.label}$actString"
} new StringBuilder()
s"In $uri${pluginStrings.mkString}" .append(s" Enabled plugin${`s?`} in ${Highlight.bold(p.id)}:\n")
} .append {
val buildStrings = for ((uri, build) <- structure.units) yield helpBuild(uri, build) autoPlugins.map(_.label).sorted.mkString(" ", s"\n ", "")
}
.toString
}
.mkString("\n")
.concat {
val autoPlugins = availableAutoPlugins(build)
val notEnabledPlugins =
autoPlugins.filter(p => build.projects.forall(!_.autoPlugins.contains(p)))
if (notEnabledPlugins.nonEmpty) {
val message = notEnabledPlugins.map(_.label).sorted.mkString(" ", "\n ", "")
"\nPlugins that are loaded to the build but not enabled in any subprojects:\n" + message
} else ""
}
val buildStrings = for {
(uri, build) <- structure.units
} yield s"In build ${uri.getPath}:\n${helpBuild(build)}"
buildStrings.mkString("\n") buildStrings.mkString("\n")
} else "No project is currently loaded." } else "No project is currently loaded."