Add more configuration axis ScopeFilter factory methods

This commit is contained in:
Maksym Fedorov 2018-03-06 23:01:31 +01:00
parent 27bbde810d
commit 15f4498494
3 changed files with 32 additions and 1 deletions

View File

@ -2705,6 +2705,17 @@ object Classpaths {
visit(projectRef, conf)
visited.toSeq
}
def interSortConfigurations(
projectRef: ProjectRef,
conf: Configuration,
data: Settings[Scope],
deps: BuildDependencies
): Seq[(ProjectRef, ConfigRef)] =
interSort(projectRef, conf, data, deps).map {
case (projectRef, configName) => (projectRef, ConfigRef(configName))
}
private[sbt] def unmanagedDependencies0(projectRef: ProjectRef,
conf: Configuration,
data: Settings[Scope],

View File

@ -10,7 +10,7 @@ package sbt
import sbt.internal.{ Load, LoadedBuildUnit }
import sbt.internal.util.{ AttributeKey, Dag, Types }
import sbt.librarymanagement.Configuration
import sbt.librarymanagement.{ Configuration, ConfigRef }
import Types.const
import Def.Initialize
@ -154,6 +154,16 @@ object ScopeFilter {
selectAxis[ConfigKey](const(c => cs(c.name)))
}
def inConfigurationsByKeys(keys: ConfigKey*): ConfigurationFilter = {
val cs = keys.toSet
selectAxis[ConfigKey](const(cs))
}
def inConfigurationsByRefs(refs: ConfigRef*): ConfigurationFilter = {
val cs = refs.map(r => ConfigKey(r.name)).toSet
selectAxis[ConfigKey](const(cs))
}
implicit def settingKeyAll[T](key: Initialize[T]): SettingKeyAll[T] = new SettingKeyAll[T](key)
implicit def taskKeyAll[T](key: Initialize[Task[T]]): TaskKeyAll[T] = new TaskKeyAll[T](key)
}

View File

@ -0,0 +1,10 @@
### Improvements
- Adds factory methods for Configuration axis scope filters
### More ways to create ScopeFilter for Configuration axis
To create configuration axis `ScopeFilter` one has to provide actual configurations
to filter by. However it's not always possible to get hold of one. For example
`Classpaths.interSort` returns configuration names.
For cases like that there are now `inConfigurationsByKeys` and `inConfigurationsByRefs` to create `ScopeFilter`'s