sbt/main/PluginManagement.scala

31 lines
1018 B
Scala

package sbt
import Keys.Classpath
import Project.Setting
final case class PluginManagement(overrides: Set[ModuleID], applyOverrides: Set[ModuleID], loader: ClassLoader, initialLoader: ClassLoader)
{
def shift: PluginManagement =
PluginManagement(Set.empty, overrides, initialLoader, initialLoader)
def addOverrides(os: Set[ModuleID]): PluginManagement =
copy(overrides = overrides ++ os)
def addOverrides(cp: Classpath): PluginManagement =
addOverrides(PluginManagement extractOverrides cp)
def inject: Seq[Setting[_]] = Seq(
Keys.dependencyOverrides ++= overrides
)
}
object PluginManagement
{
def apply(initialLoader: ClassLoader): PluginManagement = PluginManagement(Set.empty, Set.empty, initialLoader, initialLoader)
def extractOverrides(classpath: Classpath): Set[ModuleID] =
classpath flatMap { _.metadata get Keys.moduleID.key map keepOverrideInfo } toSet;
def keepOverrideInfo(m: ModuleID): ModuleID =
ModuleID(m.organization, m.name, m.revision, crossVersion = m.crossVersion)
}