Merge pull request #3994 from fmlrt/in_configuration_scope_filter_factories

Add more configuration axis ScopeFilter factory methods
This commit is contained in:
Dale Wijnand 2018-03-08 11:26:38 +00:00 committed by GitHub
commit a85d7606f3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 1 deletions

View File

@ -2709,6 +2709,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