Resolve some TODOs by creating a private copy2 in Project

This commit is contained in:
Dale Wijnand 2017-10-03 18:07:42 +01:00
parent dd9b2b2f3a
commit 9e855ffb55
No known key found for this signature in database
GPG Key ID: 4F256E3D151DF5EF
1 changed files with 16 additions and 43 deletions

View File

@ -111,7 +111,6 @@ sealed trait ProjectDefinition[PR <: ProjectReference] {
}
sealed trait Project extends ProjectDefinition[ProjectReference] {
// TODO: add parameters for plugins in 0.14.0 (not reasonable to do in a binary compatible way in 0.13)
private[sbt] def copy(
id: String = id,
base: File = base,
@ -119,6 +118,19 @@ sealed trait Project extends ProjectDefinition[ProjectReference] {
dependencies: Seq[ClasspathDep[ProjectReference]] = dependencies,
settings: Seq[Setting[_]] = settings,
configurations: Seq[Configuration] = configurations
): Project =
copy2(id, base, aggregate, dependencies, settings, configurations)
private[this] def copy2(
id: String = id,
base: File = base,
aggregate: Seq[ProjectReference] = aggregate,
dependencies: Seq[ClasspathDep[ProjectReference]] = dependencies,
settings: Seq[Setting[_]] = settings,
configurations: Seq[Configuration] = configurations,
plugins: Plugins = plugins,
autoPlugins: Seq[AutoPlugin] = autoPlugins,
projectOrigin: ProjectOrigin = projectOrigin,
): Project =
unresolved(
id,
@ -217,52 +229,13 @@ sealed trait Project extends ProjectDefinition[ProjectReference] {
def disablePlugins(ps: AutoPlugin*): Project =
setPlugins(Plugins.and(plugins, Plugins.And(ps.map(p => Plugins.Exclude(p)).toList)))
private[this] def setPlugins(ns: Plugins): Project = {
// TODO: for 0.14.0, use copy when it has the additional `plugins` parameter
unresolved(
id,
base,
aggregate = aggregate,
dependencies = dependencies,
settings,
configurations,
ns,
autoPlugins,
projectOrigin
)
}
private[this] def setPlugins(ns: Plugins): Project = copy2(plugins = ns)
/** Definitively set the [[AutoPlugin]]s for this project. */
private[sbt] def setAutoPlugins(autos: Seq[AutoPlugin]): Project = {
// TODO: for 0.14.0, use copy when it has the additional `autoPlugins` parameter
unresolved(
id,
base,
aggregate = aggregate,
dependencies = dependencies,
settings,
configurations,
plugins,
autos,
projectOrigin
)
}
private[sbt] def setAutoPlugins(autos: Seq[AutoPlugin]): Project = copy2(autoPlugins = autos)
/** Definitively set the [[ProjectOrigin]] for this project. */
private[sbt] def setProjectOrigin(origin: ProjectOrigin): Project = {
// TODO: for 1.0.x, use withProjectOrigin.
unresolved(
id,
base,
aggregate = aggregate,
dependencies = dependencies,
settings,
configurations,
plugins,
autoPlugins,
origin
)
}
private[sbt] def setProjectOrigin(origin: ProjectOrigin): Project = copy2(projectOrigin = origin)
}
sealed trait ResolvedProject extends ProjectDefinition[ProjectRef] {