Merge branch '1.2.x' into wip/merge-1.2.x

This commit is contained in:
Eugene Yokota 2018-08-16 16:15:15 -04:00
commit 590dc5e96d
29 changed files with 287 additions and 274 deletions

View File

@ -2,6 +2,7 @@ import Util._
import Dependencies._ import Dependencies._
import Sxr.sxr import Sxr.sxr
import com.typesafe.tools.mima.core._, ProblemFilters._ import com.typesafe.tools.mima.core._, ProblemFilters._
import local.Scripted
// ThisBuild settings take lower precedence, // ThisBuild settings take lower precedence,
// but can be shared across the multi projects. // but can be shared across the multi projects.
@ -9,7 +10,7 @@ def buildLevelSettings: Seq[Setting[_]] =
inThisBuild( inThisBuild(
Seq( Seq(
organization := "org.scala-sbt", organization := "org.scala-sbt",
version := "1.2.0-SNAPSHOT", version := "1.2.1-SNAPSHOT",
description := "sbt is an interactive build tool", description := "sbt is an interactive build tool",
bintrayOrganization := Some("sbt"), bintrayOrganization := Some("sbt"),
bintrayRepository := { bintrayRepository := {
@ -80,7 +81,8 @@ val mimaSettings = Def settings (
mimaPreviousArtifacts := { mimaPreviousArtifacts := {
Seq( Seq(
"1.0.0", "1.0.1", "1.0.2", "1.0.3", "1.0.4", "1.0.0", "1.0.1", "1.0.2", "1.0.3", "1.0.4",
"1.1.0", "1.1.1", "1.1.2", "1.1.0", "1.1.1", "1.1.2", "1.1.3", "1.1.4", "1.1.5", "1.1.6",
"1.2.0"
).map { v => ).map { v =>
organization.value % moduleName.value % v cross (if (crossPaths.value) CrossVersion.binary else CrossVersion.disabled) organization.value % moduleName.value % v cross (if (crossPaths.value) CrossVersion.binary else CrossVersion.disabled)
}.toSet }.toSet
@ -719,6 +721,10 @@ def allProjects =
lazy val nonRoots = allProjects.map(p => LocalProject(p.id)) lazy val nonRoots = allProjects.map(p => LocalProject(p.id))
ThisBuild / scriptedBufferLog := true
ThisBuild / scriptedPrescripted := { _ => }
def otherRootSettings = def otherRootSettings =
Seq( Seq(
scripted := scriptedTask.evaluated, scripted := scriptedTask.evaluated,

View File

@ -135,8 +135,10 @@ object Defaults extends BuildCommon {
def buildCore: Seq[Setting[_]] = thisBuildCore ++ globalCore def buildCore: Seq[Setting[_]] = thisBuildCore ++ globalCore
def thisBuildCore: Seq[Setting[_]] = def thisBuildCore: Seq[Setting[_]] =
inScope(GlobalScope.copy(project = Select(ThisBuild)))( inScope(GlobalScope.copy(project = Select(ThisBuild)))(
Seq(
managedDirectory := baseDirectory.value / "lib_managed" managedDirectory := baseDirectory.value / "lib_managed"
) )
)
private[sbt] lazy val globalCore: Seq[Setting[_]] = globalDefaults( private[sbt] lazy val globalCore: Seq[Setting[_]] = globalDefaults(
defaultTestTasks(test) ++ defaultTestTasks(testOnly) ++ defaultTestTasks(testQuick) ++ Seq( defaultTestTasks(test) ++ defaultTestTasks(testOnly) ++ defaultTestTasks(testQuick) ++ Seq(
excludeFilter :== HiddenFileFilter excludeFilter :== HiddenFileFilter
@ -303,9 +305,11 @@ object Defaults extends BuildCommon {
def defaultTestTasks(key: Scoped): Seq[Setting[_]] = def defaultTestTasks(key: Scoped): Seq[Setting[_]] =
inTask(key)( inTask(key)(
Seq(
tags := Seq(Tags.Test -> 1), tags := Seq(Tags.Test -> 1),
logBuffered := true logBuffered := true
) )
)
// TODO: This should be on the new default settings for a project. // TODO: This should be on the new default settings for a project.
def projectCore: Seq[Setting[_]] = Seq( def projectCore: Seq[Setting[_]] = Seq(
@ -761,6 +765,7 @@ object Defaults extends BuildCommon {
lazy val ConfigGlobal: Scope = ConfigZero lazy val ConfigGlobal: Scope = ConfigZero
def testTaskOptions(key: Scoped): Seq[Setting[_]] = def testTaskOptions(key: Scoped): Seq[Setting[_]] =
inTask(key)( inTask(key)(
Seq(
testListeners := { testListeners := {
TestLogger.make( TestLogger.make(
streams.value.log, streams.value.log,
@ -775,9 +780,12 @@ object Defaults extends BuildCommon {
}, },
testOptions := Tests.Listeners(testListeners.value) +: (testOptions in TaskZero).value, testOptions := Tests.Listeners(testListeners.value) +: (testOptions in TaskZero).value,
testExecution := testExecutionTask(key).value testExecution := testExecutionTask(key).value
)
) ++ inScope(GlobalScope)( ) ++ inScope(GlobalScope)(
Seq(
derive(testGrouping := singleTestGroupDefault.value) derive(testGrouping := singleTestGroupDefault.value)
) )
)
private[this] def closeableTestLogger(manager: Streams, baseKey: Scoped, buffered: Boolean)( private[this] def closeableTestLogger(manager: Streams, baseKey: Scoped, buffered: Boolean)(
tdef: TestDefinition tdef: TestDefinition
@ -1049,6 +1057,7 @@ object Defaults extends BuildCommon {
lazy val packageConfig: Seq[Setting[_]] = lazy val packageConfig: Seq[Setting[_]] =
inTask(packageBin)( inTask(packageBin)(
Seq(
packageOptions := { packageOptions := {
val n = name.value val n = name.value
val ver = version.value val ver = version.value
@ -1060,13 +1069,16 @@ object Defaults extends BuildCommon {
Package.addImplManifestAttributes(n, ver, homepage.value, org, orgName) +: Package.addImplManifestAttributes(n, ver, homepage.value, org, orgName) +:
main.map(Package.MainClass.apply) ++: old main.map(Package.MainClass.apply) ++: old
} }
)
) ++ ) ++
inTask(packageSrc)( inTask(packageSrc)(
Seq(
packageOptions := Package.addSpecManifestAttributes( packageOptions := Package.addSpecManifestAttributes(
name.value, name.value,
version.value, version.value,
organizationName.value organizationName.value
) +: packageOptions.value ) +: packageOptions.value
)
) ++ ) ++
packageTaskSettings(packageBin, packageBinMappings) ++ packageTaskSettings(packageBin, packageBinMappings) ++
packageTaskSettings(packageSrc, packageSrcMappings) ++ packageTaskSettings(packageSrc, packageSrcMappings) ++
@ -1154,6 +1166,7 @@ object Defaults extends BuildCommon {
def packageTaskSettings(key: TaskKey[File], mappingsTask: Initialize[Task[Seq[(File, String)]]]) = def packageTaskSettings(key: TaskKey[File], mappingsTask: Initialize[Task[Seq[(File, String)]]]) =
inTask(key)( inTask(key)(
Seq(
key in TaskZero := packageTask.value, key in TaskZero := packageTask.value,
packageConfiguration := packageConfigurationTask.value, packageConfiguration := packageConfigurationTask.value,
mappings := mappingsTask.value, mappings := mappingsTask.value,
@ -1161,6 +1174,7 @@ object Defaults extends BuildCommon {
artifact := artifactSetting.value, artifact := artifactSetting.value,
artifactPath := artifactPathSetting(artifact).value artifactPath := artifactPathSetting(artifact).value
) )
)
def packageTask: Initialize[Task[File]] = def packageTask: Initialize[Task[File]] =
Def.task { Def.task {
@ -1367,6 +1381,7 @@ object Defaults extends BuildCommon {
def docTaskSettings(key: TaskKey[File] = doc): Seq[Setting[_]] = def docTaskSettings(key: TaskKey[File] = doc): Seq[Setting[_]] =
inTask(key)( inTask(key)(
Seq(
apiMappings ++= { apiMappings ++= {
val dependencyCp = dependencyClasspath.value val dependencyCp = dependencyClasspath.value
val log = streams.value.log val log = streams.value.log
@ -1411,6 +1426,7 @@ object Defaults extends BuildCommon {
out out
} }
) )
)
def mainBgRunTask = mainBgRunTaskForConfig(Select(Runtime)) def mainBgRunTask = mainBgRunTaskForConfig(Select(Runtime))
def mainBgRunMainTask = mainBgRunMainTaskForConfig(Select(Runtime)) def mainBgRunMainTask = mainBgRunMainTaskForConfig(Select(Runtime))
@ -1710,6 +1726,7 @@ object Defaults extends BuildCommon {
// build.sbt is treated a Scala source of metabuild, so to enable deprecation flag on build.sbt we set the option here. // build.sbt is treated a Scala source of metabuild, so to enable deprecation flag on build.sbt we set the option here.
lazy val deprecationSettings: Seq[Setting[_]] = lazy val deprecationSettings: Seq[Setting[_]] =
inConfig(Compile)( inConfig(Compile)(
Seq(
scalacOptions := { scalacOptions := {
val old = scalacOptions.value val old = scalacOptions.value
val existing = old.toSet val existing = old.toSet
@ -1718,6 +1735,7 @@ object Defaults extends BuildCommon {
else old else old
} }
) )
)
} }
object Classpaths { object Classpaths {
import Keys._ import Keys._
@ -2259,6 +2277,7 @@ object Classpaths {
def sbtClassifiersTasks = def sbtClassifiersTasks =
sbtClassifiersGlobalDefaults ++ sbtClassifiersGlobalDefaults ++
inTask(updateSbtClassifiers)( inTask(updateSbtClassifiers)(
Seq(
externalResolvers := { externalResolvers := {
val explicit = buildStructure.value val explicit = buildStructure.value
.units(thisProjectRef.value.build) .units(thisProjectRef.value.build)
@ -2335,6 +2354,7 @@ object Classpaths {
} }
} }
} tag (Tags.Update, Tags.Network)).value } tag (Tags.Update, Tags.Network)).value
)
) ++ Seq(bootIvyConfiguration := (ivyConfiguration in updateSbtClassifiers).value) ) ++ Seq(bootIvyConfiguration := (ivyConfiguration in updateSbtClassifiers).value)
def classifiersModuleTask: Initialize[Task[GetClassifiersModule]] = def classifiersModuleTask: Initialize[Task[GetClassifiersModule]] =
@ -3458,7 +3478,7 @@ trait BuildExtra extends BuildCommon with DefExtra {
* This is useful for reducing test:compile time when not running test. * This is useful for reducing test:compile time when not running test.
*/ */
def noTestCompletion(config: Configuration = Test): Setting[_] = def noTestCompletion(config: Configuration = Test): Setting[_] =
inConfig(config)(definedTests := detectTests.value).head inConfig(config)(Seq(definedTests := detectTests.value)).head
def filterKeys(ss: Seq[Setting[_]], transitive: Boolean = false)( def filterKeys(ss: Seq[Setting[_]], transitive: Boolean = false)(
f: ScopedKey[_] => Boolean f: ScopedKey[_] => Boolean

View File

@ -148,7 +148,7 @@ final case class Extracted(
): State = { ): State = {
val appendSettings = val appendSettings =
Load.transformSettings(Load.projectScope(currentRef), currentRef.build, rootProject, settings) Load.transformSettings(Load.projectScope(currentRef), currentRef.build, rootProject, settings)
val newStructure = Load.reapply(sessionSettings ++ appendSettings, structure, state.log) val newStructure = Load.reapply(sessionSettings ++ appendSettings, structure)
Project.setProject(session, newStructure, state) Project.setProject(session, newStructure, state)
} }
} }

View File

@ -472,7 +472,7 @@ object BuiltinCommands {
val loggerInject = LogManager.settingsLogger(s) val loggerInject = LogManager.settingsLogger(s)
val withLogger = newSession.appendRaw(loggerInject :: Nil) val withLogger = newSession.appendRaw(loggerInject :: Nil)
val show = Project.showContextKey2(newSession) val show = Project.showContextKey2(newSession)
val newStructure = Load.reapply(withLogger.mergeSettings, structure, s.log)(show) val newStructure = Load.reapply(withLogger.mergeSettings, structure)(show)
Project.setProject(newSession, newStructure, s) Project.setProject(newSession, newStructure, s)
} }

View File

@ -47,10 +47,10 @@ private[sbt] object PluginCross {
val add = List(sbtVersion in GlobalScope in pluginCrossBuild :== version) ++ val add = List(sbtVersion in GlobalScope in pluginCrossBuild :== version) ++
List(scalaVersion := scalaVersionSetting.value) ++ List(scalaVersion := scalaVersionSetting.value) ++
inScope(GlobalScope.copy(project = Select(currentRef)))( inScope(GlobalScope.copy(project = Select(currentRef)))(
scalaVersion := scalaVersionSetting.value Seq(scalaVersion := scalaVersionSetting.value)
) )
val cleared = session.mergeSettings.filterNot(crossExclude) val cleared = session.mergeSettings.filterNot(crossExclude)
val newStructure = Load.reapply(cleared ++ add, structure, state.log) val newStructure = Load.reapply(cleared ++ add, structure)
Project.setProject(session, newStructure, command :: state) Project.setProject(session, newStructure, command :: state)
} }
} }

View File

@ -32,7 +32,7 @@ import Keys.{
watch watch
} }
import Scope.{ Global, ThisScope } import Scope.{ Global, ThisScope }
import Def.{ Flattened, Initialize, ScopedKey, Setting, SettingsDefinition } import Def.{ Flattened, Initialize, ScopedKey, Setting }
import sbt.internal.{ import sbt.internal.{
Load, Load,
BuildStructure, BuildStructure,
@ -892,19 +892,17 @@ trait ProjectExtra {
implicit def richTaskSessionVar[T](init: Initialize[Task[T]]): Project.RichTaskSessionVar[T] = implicit def richTaskSessionVar[T](init: Initialize[Task[T]]): Project.RichTaskSessionVar[T] =
new Project.RichTaskSessionVar(init) new Project.RichTaskSessionVar(init)
def inThisBuild(ss: SettingsDefinition*): Seq[Setting[_]] = def inThisBuild(ss: Seq[Setting[_]]): Seq[Setting[_]] =
inScope(ThisScope.copy(project = Select(ThisBuild)))(ss flatMap (_.settings)) inScope(ThisScope.copy(project = Select(ThisBuild)))(ss)
def inConfig(conf: Configuration)(ss: SettingsDefinition*): Seq[Setting[_]] = def inConfig(conf: Configuration)(ss: Seq[Setting[_]]): Seq[Setting[_]] =
inScope(ThisScope.copy(config = Select(conf)))( inScope(ThisScope.copy(config = Select(conf)))((configuration :== conf) +: ss)
(configuration :== conf) +: (ss flatMap (_.settings))
)
def inTask(t: Scoped)(ss: SettingsDefinition*): Seq[Setting[_]] = def inTask(t: Scoped)(ss: Seq[Setting[_]]): Seq[Setting[_]] =
inScope(ThisScope.copy(task = Select(t.key)))(ss flatMap (_.settings)) inScope(ThisScope.copy(task = Select(t.key)))(ss)
def inScope(scope: Scope)(ss: SettingsDefinition*): Seq[Setting[_]] = def inScope(scope: Scope)(ss: Seq[Setting[_]]): Seq[Setting[_]] =
Project.transform(Scope.replaceThis(scope), ss flatMap (_.settings)) Project.transform(Scope.replaceThis(scope), ss)
private[sbt] def inThisBuild[T](i: Initialize[T]): Initialize[T] = private[sbt] def inThisBuild[T](i: Initialize[T]): Initialize[T] =
inScope(ThisScope.copy(project = Select(ThisBuild)), i) inScope(ThisScope.copy(project = Select(ThisBuild)), i)

View File

@ -106,12 +106,14 @@ object GlobalPlugin {
} }
} }
val globalPluginSettings = Project.inScope(Scope.GlobalScope in LocalRootProject)( val globalPluginSettings = Project.inScope(Scope.GlobalScope in LocalRootProject)(
Seq(
organization := SbtArtifacts.Organization, organization := SbtArtifacts.Organization,
onLoadMessage := Keys.baseDirectory("Loading global plugins from " + _).value, onLoadMessage := Keys.baseDirectory("Loading global plugins from " + _).value,
name := "global-plugin", name := "global-plugin",
sbtPlugin := true, sbtPlugin := true,
version := "0.0" version := "0.0"
) )
)
} }
final case class GlobalPluginData( final case class GlobalPluginData(
projectID: ModuleID, projectID: ModuleID,

View File

@ -267,7 +267,7 @@ private[sbt] object Load {
} }
Project.checkTargets(data) foreach sys.error Project.checkTargets(data) foreach sys.error
val index = timed("Load.apply: structureIndex", log) { val index = timed("Load.apply: structureIndex", log) {
structureIndex(data, settings, loaded.extra(data), projects, log) structureIndex(data, settings, loaded.extra(data), projects)
} }
val streams = timed("Load.apply: mkStreams", log) { mkStreams(projects, loaded.root, data) } val streams = timed("Load.apply: mkStreams", log) { mkStreams(projects, loaded.root, data) }
val bs = new BuildStructure( val bs = new BuildStructure(
@ -321,8 +321,7 @@ private[sbt] object Load {
data: Settings[Scope], data: Settings[Scope],
settings: Seq[Setting[_]], settings: Seq[Setting[_]],
extra: KeyIndex => BuildUtil[_], extra: KeyIndex => BuildUtil[_],
projects: Map[URI, LoadedBuildUnit], projects: Map[URI, LoadedBuildUnit]
log: Logger
): StructureIndex = { ): StructureIndex = {
val keys = Index.allKeys(settings) val keys = Index.allKeys(settings)
val attributeKeys = Index.attributeKeys(data) ++ keys.map(_.key) val attributeKeys = Index.attributeKeys(data) ++ keys.map(_.key)
@ -331,7 +330,6 @@ private[sbt] object Load {
val configsMap: Map[String, Seq[Configuration]] = val configsMap: Map[String, Seq[Configuration]] =
projects.values.flatMap(bu => bu.defined map { case (k, v) => (k, v.configurations) }).toMap projects.values.flatMap(bu => bu.defined map { case (k, v) => (k, v.configurations) }).toMap
val keyIndex = KeyIndex(scopedKeys.toVector, projectsMap, configsMap) val keyIndex = KeyIndex(scopedKeys.toVector, projectsMap, configsMap)
checkConfigurations(keyIndex, log)
val aggIndex = KeyIndex.aggregate(scopedKeys.toVector, extra(keyIndex), projectsMap, configsMap) val aggIndex = KeyIndex.aggregate(scopedKeys.toVector, extra(keyIndex), projectsMap, configsMap)
new StructureIndex( new StructureIndex(
Index.stringToKeyMap(attributeKeys), Index.stringToKeyMap(attributeKeys),
@ -342,33 +340,14 @@ private[sbt] object Load {
) )
} }
private def checkConfigurations(keyIndex: KeyIndex, log: Logger): Unit = {
keyIndex.guessedConfigIdents
.collect {
// Filter out any global configurations since we don't have a way of fixing them.
// Chances are this is only going to be the Test configuration which will have guessed correctly.
case (Some(projectRef), config, guess) =>
(Reference.display(projectRef), config, guess)
}
.foreach {
case (project, config, guess) =>
log.warn(
s"""The project $project references an unknown configuration "$config" and was guessed to be "$guess"."""
)
log.warn("This configuration should be explicitly added to the project.")
}
}
// Reevaluates settings after modifying them. Does not recompile or reload any build components. // Reevaluates settings after modifying them. Does not recompile or reload any build components.
def reapply( def reapply(newSettings: Seq[Setting[_]], structure: BuildStructure)(
newSettings: Seq[Setting[_]], implicit display: Show[ScopedKey[_]]
structure: BuildStructure, ): BuildStructure = {
log: Logger
)(implicit display: Show[ScopedKey[_]]): BuildStructure = {
val transformed = finalTransforms(newSettings) val transformed = finalTransforms(newSettings)
val newData = Def.make(transformed)(structure.delegates, structure.scopeLocal, display) val newData = Def.make(transformed)(structure.delegates, structure.scopeLocal, display)
def extra(index: KeyIndex) = BuildUtil(structure.root, structure.units, index, newData) def extra(index: KeyIndex) = BuildUtil(structure.root, structure.units, index, newData)
val newIndex = structureIndex(newData, transformed, extra, structure.units, log) val newIndex = structureIndex(newData, transformed, extra, structure.units)
val newStreams = mkStreams(structure.units, structure.root, newData) val newStreams = mkStreams(structure.units, structure.root, newData)
new BuildStructure( new BuildStructure(
units = structure.units, units = structure.units,
@ -382,6 +361,15 @@ private[sbt] object Load {
) )
} }
@deprecated("No longer used. For binary compatibility", "1.2.1")
def reapply(
newSettings: Seq[Setting[_]],
structure: BuildStructure,
log: Logger
)(implicit display: Show[ScopedKey[_]]): BuildStructure = {
reapply(newSettings, structure)
}
def buildConfigurations( def buildConfigurations(
loaded: LoadedBuild, loaded: LoadedBuild,
rootProject: URI => String, rootProject: URI => String,
@ -1189,6 +1177,7 @@ private[sbt] object Load {
/** These are the settings defined when loading a project "meta" build. */ /** These are the settings defined when loading a project "meta" build. */
val autoPluginSettings: Seq[Setting[_]] = inScope(GlobalScope in LocalRootProject)( val autoPluginSettings: Seq[Setting[_]] = inScope(GlobalScope in LocalRootProject)(
Seq(
sbtPlugin :== true, sbtPlugin :== true,
pluginData := { pluginData := {
val prod = (exportedProducts in Configurations.Runtime).value val prod = (exportedProducts in Configurations.Runtime).value
@ -1204,6 +1193,7 @@ private[sbt] object Load {
}, },
onLoadMessage := ("Loading project definition from " + baseDirectory.value) onLoadMessage := ("Loading project definition from " + baseDirectory.value)
) )
)
private[this] def removeEntries( private[this] def removeEntries(
cp: Seq[Attributed[File]], cp: Seq[Attributed[File]],

View File

@ -65,7 +65,7 @@ object Script {
scriptSettings ++ embeddedSettings scriptSettings ++ embeddedSettings
) )
val newStructure = Load.reapply(session.original ++ append, structure, state.log) val newStructure = Load.reapply(session.original ++ append, structure)
val arguments = state.remainingCommands.drop(1).map(e => s""""${e.commandLine}"""") val arguments = state.remainingCommands.drop(1).map(e => s""""${e.commandLine}"""")
val newState = arguments.mkString("run ", " ", "") :: state.copy(remainingCommands = Nil) val newState = arguments.mkString("run ", " ", "") :: state.copy(remainingCommands = Nil)
Project.setProject(session, newStructure, newState) Project.setProject(session, newStructure, newState)

View File

@ -104,7 +104,7 @@ object FakeState {
val extra: KeyIndex => BuildUtil[_] = (keyIndex) => val extra: KeyIndex => BuildUtil[_] = (keyIndex) =>
BuildUtil(base.toURI, Map.empty, keyIndex, data) BuildUtil(base.toURI, Map.empty, keyIndex, data)
val structureIndex: StructureIndex = val structureIndex: StructureIndex =
Load.structureIndex(data, settings, extra, Map.empty, Logger.Null) Load.structureIndex(data, settings, extra, Map.empty)
val streams: (State) => BuildStreams.Streams = null val streams: (State) => BuildStreams.Streams = null
val loadedDefinitions: LoadedDefinitions = new LoadedDefinitions( val loadedDefinitions: LoadedDefinitions = new LoadedDefinitions(

View File

@ -174,7 +174,7 @@ object SettingQueryTest extends org.specs2.mutable.Specification {
val data: Settings[Scope] = Def.make(settings)(delegates, scopeLocal, display) val data: Settings[Scope] = Def.make(settings)(delegates, scopeLocal, display)
val extra: KeyIndex => BuildUtil[_] = index => BuildUtil(baseUri, units, index, data) val extra: KeyIndex => BuildUtil[_] = index => BuildUtil(baseUri, units, index, data)
val index: StructureIndex = structureIndex(data, settings, extra, units, Logger.Null) val index: StructureIndex = structureIndex(data, settings, extra, units)
val streams: State => Streams = mkStreams(units, baseUri, data) val streams: State => Streams = mkStreams(units, baseUri, data)
val structure: BuildStructure = val structure: BuildStructure =

View File

@ -8,10 +8,10 @@ object Dependencies {
val baseScalaVersion = scala212 val baseScalaVersion = scala212
// sbt modules // sbt modules
private val ioVersion = "1.2.0-M2" private val ioVersion = "1.2.1"
private val utilVersion = "1.2.0-M2" private val utilVersion = "1.2.0"
private val lmVersion = "1.2.0-M3" private val lmVersion = "1.2.0"
private val zincVersion = "1.2.0-M2" private val zincVersion = "1.2.1"
private val sbtIO = "org.scala-sbt" %% "io" % ioVersion private val sbtIO = "org.scala-sbt" %% "io" % ioVersion

View File

@ -1,32 +1,26 @@
package local
import java.lang.reflect.InvocationTargetException import java.lang.reflect.InvocationTargetException
import sbt._ import sbt._
import sbt.internal.inc.ScalaInstance import sbt.internal.inc.ScalaInstance
import sbt.internal.inc.classpath.{ ClasspathUtilities, FilteredLoader } import sbt.internal.inc.classpath.{ ClasspathUtilities, FilteredLoader }
import sbt.ScriptedPlugin.autoImport._
object ScriptedPlugin extends AutoPlugin { object LocalScriptedPlugin extends AutoPlugin {
override def requires = plugins.JvmPlugin override def requires = plugins.JvmPlugin
object autoImport extends ScriptedKeys object autoImport extends ScriptedKeys
import autoImport._ import autoImport._
override def globalSettings = super.globalSettings ++ Seq(
scriptedBufferLog := true,
scriptedPrescripted := { _ => },
)
} }
trait ScriptedKeys { trait ScriptedKeys {
val publishAll = taskKey[Unit]("") val publishAll = taskKey[Unit]("")
val publishLocalBinAll = taskKey[Unit]("") val publishLocalBinAll = taskKey[Unit]("")
val scripted = inputKey[Unit]("")
val scriptedUnpublished = inputKey[Unit]("Execute scripted without publishing sbt first. " + val scriptedUnpublished = inputKey[Unit]("Execute scripted without publishing sbt first. " +
"Saves you some time when only your test has changed") "Saves you some time when only your test has changed")
val scriptedSource = settingKey[File]("") val scriptedSource = settingKey[File]("")
val scriptedPrescripted = taskKey[File => Unit]("") val scriptedPrescripted = taskKey[File => Unit]("")
val scriptedBufferLog = settingKey[Boolean]("")
val scriptedLaunchOpts = settingKey[Seq[String]]("options to pass to jvm launching scripted tasks")
} }
object Scripted { object Scripted {

View File

@ -1 +1 @@
sbt.version=1.1.6 sbt.version=1.2.0

View File

@ -1,6 +1,6 @@
inThisBuild( inThisBuild(List(
crossScalaVersions := Seq("2.12.1", "2.11.8") crossScalaVersions := Seq("2.12.1", "2.11.8")
) ))
lazy val rootProj = (project in file(".")) lazy val rootProj = (project in file("."))
.aggregate(libProj, fooPlugin) .aggregate(libProj, fooPlugin)

View File

@ -22,7 +22,7 @@ x in subA in Compile := {
} }
inConfig(Compile)( inConfig(Compile)(Seq(
y in subB := { y in subB := {
// verify that the referenced key gets delegated // verify that the referenced key gets delegated
val xty = (x in Test in y).previous getOrElse 0 // 13 val xty = (x in Test in y).previous getOrElse 0 // 13
@ -31,7 +31,7 @@ inConfig(Compile)(
println(s"xcy=$xcy, xty=$xty") println(s"xcy=$xcy, xty=$xty")
xty * xcy xty * xcy
} }
) ))
def parser = { def parser = {
import complete.DefaultParsers._ import complete.DefaultParsers._

View File

@ -4,7 +4,7 @@ dependencyOverrides in ThisBuild += "com.github.nscala-time" %% "nscala-time" %
lazy val root = (project in file(".")) lazy val root = (project in file("."))
.dependsOn(p1 % Compile) .dependsOn(p1 % Compile)
.settings( .settings(
inThisBuild( inThisBuild(List(
organizationName := "eed3si9n", organizationName := "eed3si9n",
organizationHomepage := Some(url("http://example.com/")), organizationHomepage := Some(url("http://example.com/")),
homepage := Some(url("https://github.com/example/example")), homepage := Some(url("https://github.com/example/example")),
@ -20,7 +20,7 @@ lazy val root = (project in file("."))
version := "0.3.1-SNAPSHOT", version := "0.3.1-SNAPSHOT",
description := "An HTTP client for Scala with Async Http Client underneath.", description := "An HTTP client for Scala with Async Http Client underneath.",
licenses := Seq("Apache 2" -> new URL("http://www.apache.org/licenses/LICENSE-2.0.txt")), licenses := Seq("Apache 2" -> new URL("http://www.apache.org/licenses/LICENSE-2.0.txt")),
), )),
ivyPaths := IvyPaths( ivyPaths := IvyPaths(
(baseDirectory in ThisBuild).value, (baseDirectory in ThisBuild).value,
Some((baseDirectory in LocalRootProject).value / "ivy-cache") Some((baseDirectory in LocalRootProject).value / "ivy-cache")

View File

@ -41,8 +41,8 @@ lazy val c = project.
lazy val root = (project in file(".")). lazy val root = (project in file(".")).
settings(commonSettings). settings(commonSettings).
settings(inThisBuild( settings(inThisBuild(Seq(
organization := "org.example", organization := "org.example",
version := "1.0-SNAPSHOT", version := "1.0-SNAPSHOT",
updateOptions := updateOptions.value.withCachedResolution(true) updateOptions := updateOptions.value.withCachedResolution(true)
)) )))

View File

@ -1,12 +1,12 @@
// https://github.com/sbt/sbt/issues/1710 // https://github.com/sbt/sbt/issues/1710
// https://github.com/sbt/sbt/issues/1760 // https://github.com/sbt/sbt/issues/1760
inThisBuild( inThisBuild(Seq(
organization := "com.example", organization := "com.example",
version := "0.1.0", version := "0.1.0",
scalaVersion := "2.10.4", scalaVersion := "2.10.4",
updateOptions := updateOptions.value.withCachedResolution(true) updateOptions := updateOptions.value.withCachedResolution(true)
) ))
def commonSettings: Seq[Def.Setting[_]] = Seq( def commonSettings: Seq[Def.Setting[_]] = Seq(
ivyPaths := IvyPaths((baseDirectory in ThisBuild).value, Some((baseDirectory in LocalRootProject).value / "ivy-cache")), ivyPaths := IvyPaths((baseDirectory in ThisBuild).value, Some((baseDirectory in LocalRootProject).value / "ivy-cache")),

View File

@ -27,7 +27,7 @@ lazy val b = project.
lazy val root = (project in file(".")). lazy val root = (project in file(".")).
aggregate(a, b). aggregate(a, b).
settings(inThisBuild( settings(inThisBuild(Seq(
organization := "org.example", organization := "org.example",
version := "1.0", version := "1.0",
updateOptions := updateOptions.value.withCachedResolution(true), updateOptions := updateOptions.value.withCachedResolution(true),
@ -45,4 +45,4 @@ lazy val root = (project in file(".")).
sys.error("commons-io NOT found when it should NOT be excluded") sys.error("commons-io NOT found when it should NOT be excluded")
} }
} }
)) )))

View File

@ -27,7 +27,7 @@ lazy val a = project.
lazy val root = (project in file(".")). lazy val root = (project in file(".")).
aggregate(a). aggregate(a).
settings(inThisBuild( settings(inThisBuild(Seq(
organization := "org.example", organization := "org.example",
version := "1.0", version := "1.0",
updateOptions := updateOptions.value.withCachedResolution(true), updateOptions := updateOptions.value.withCachedResolution(true),
@ -49,4 +49,4 @@ lazy val root = (project in file(".")).
sys.error("junit NOT found when it should be included: " + atestcp.toString) sys.error("junit NOT found when it should be included: " + atestcp.toString)
} }
} }
)) )))

View File

@ -2,12 +2,12 @@ lazy val p1 = (project in file("p1")).
settings( settings(
checkTask(expectedMongo), checkTask(expectedMongo),
libraryDependencies += "org.mongodb" %% "casbah" % "2.4.1" pomOnly(), libraryDependencies += "org.mongodb" %% "casbah" % "2.4.1" pomOnly(),
inThisBuild( inThisBuild(List(
organization := "org.example", organization := "org.example",
version := "1.0", version := "1.0",
scalaVersion := "2.9.2", scalaVersion := "2.9.2",
autoScalaLibrary := false autoScalaLibrary := false
) ))
) )
lazy val p2 = (project in file("p2")). lazy val p2 = (project in file("p2")).

View File

@ -1,12 +1,12 @@
lazy val root = (project in file(".")). lazy val root = (project in file(".")).
dependsOn(sub). dependsOn(sub).
aggregate(sub). aggregate(sub).
settings(inThisBuild( settings(inThisBuild(List(
organization := "A", organization := "A",
version := "1.0", version := "1.0",
ivyPaths := baseDirectory( dir => IvyPaths(dir, Some(dir / "ivy" / "cache")) ).value, ivyPaths := baseDirectory( dir => IvyPaths(dir, Some(dir / "ivy" / "cache")) ).value,
externalResolvers := (baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil }).value externalResolvers := (baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil }).value
), )),
mavenStyle, mavenStyle,
interProject, interProject,
name := "Publish Test" name := "Publish Test"

View File

@ -1,10 +1,10 @@
lazy val root = (project in file(".")). lazy val root = (project in file(".")).
settings(inThisBuild( settings(inThisBuild(List(
organization := "A", organization := "A",
version := "1.0", version := "1.0",
ivyPaths := baseDirectory( dir => IvyPaths(dir, Some(dir / "ivy" / "cache")) ).value, ivyPaths := baseDirectory( dir => IvyPaths(dir, Some(dir / "ivy" / "cache")) ).value,
externalResolvers := (baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil }).value externalResolvers := (baseDirectory map { base => Resolver.file("local", base / "ivy" / "local" asFile)(Resolver.ivyStylePatterns) :: Nil }).value
), )),
mavenStyle, mavenStyle,
name := "Retrieve Test", name := "Retrieve Test",
libraryDependencies := (publishMavenStyle { style => if(style) mavenStyleDependencies else ivyStyleDependencies }).value libraryDependencies := (publishMavenStyle { style => if(style) mavenStyleDependencies else ivyStyleDependencies }).value

View File

@ -23,7 +23,7 @@ globalDepE in Global := "globalE"
// ---------------- Derived settings // ---------------- Derived settings
// verify that deriving is transitive // verify that deriving is transitive
inScope(GlobalScope)( inScope(GlobalScope)(Seq(
Def.derive(customA := customB.value + "-a"), Def.derive(customA := customB.value + "-a"),
Def.derive(customB := thisProject.value.id + "-b"), Def.derive(customB := thisProject.value.id + "-b"),
// verify that a setting with multiple triggers still only gets added once // verify that a setting with multiple triggers still only gets added once
@ -36,7 +36,7 @@ inScope(GlobalScope)(
// if customE were added in Global because of name, there would be an error // if customE were added in Global because of name, there would be an error
// because description wouldn't be found // because description wouldn't be found
Def.derive(customE := globalDepE.value + "-" + projectDepE.value) Def.derive(customE := globalDepE.value + "-" + projectDepE.value)
) ))
// ---------------- Projects // ---------------- Projects

View File

@ -1,7 +1,7 @@
scalaVersion in ThisBuild := "2.11.8" scalaVersion in ThisBuild := "2.11.8"
concurrentRestrictions in Global := Seq(Tags.limitAll(4)) concurrentRestrictions in Global := Seq(Tags.limitAll(4))
libraryDependencies += "org.specs2" %% "specs2-core" % "3.8.4" % Test libraryDependencies += "org.specs2" %% "specs2-core" % "3.8.4" % Test
inConfig(Test)( inConfig(Test)(Seq(
testGrouping := { testGrouping := {
val home = javaHome.value val home = javaHome.value
val strategy = outputStrategy.value val strategy = outputStrategy.value
@ -22,4 +22,4 @@ inConfig(Test)(
))} ))}
}, },
TaskKey[Unit]("test-failure") := test.failure.value TaskKey[Unit]("test-failure") := test.failure.value
) ))

View File

@ -4,7 +4,7 @@
[app] [app]
org: ${sbt.organization-org.scala-sbt} org: ${sbt.organization-org.scala-sbt}
name: sbt name: sbt
version: ${sbt.version-read(sbt.version)[1.1.1]} version: ${sbt.version-read(sbt.version)[1.2.0]}
class: sbt.ScriptMain class: sbt.ScriptMain
components: xsbti,extra components: xsbti,extra
cross-versioned: ${sbt.cross.versioned-false} cross-versioned: ${sbt.cross.versioned-false}
@ -22,6 +22,7 @@
[boot] [boot]
directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/} directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/}
lock: ${sbt.boot.lock-true}
[ivy] [ivy]
ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/} ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}

View File

@ -4,7 +4,7 @@
[app] [app]
org: ${sbt.organization-org.scala-sbt} org: ${sbt.organization-org.scala-sbt}
name: sbt name: sbt
version: ${sbt.version-read(sbt.version)[1.1.1]} version: ${sbt.version-read(sbt.version)[1.2.0]}
class: sbt.ConsoleMain class: sbt.ConsoleMain
components: xsbti,extra components: xsbti,extra
cross-versioned: ${sbt.cross.versioned-false} cross-versioned: ${sbt.cross.versioned-false}
@ -22,6 +22,7 @@
[boot] [boot]
directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/} directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/}
lock: ${sbt.boot.lock-true}
[ivy] [ivy]
ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/} ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}

View File

@ -4,7 +4,7 @@
[app] [app]
org: ${sbt.organization-org.scala-sbt} org: ${sbt.organization-org.scala-sbt}
name: sbt name: sbt
version: ${sbt.version-read(sbt.version)[1.1.1]} version: ${sbt.version-read(sbt.version)[1.2.0]}
class: sbt.xMain class: sbt.xMain
components: xsbti,extra components: xsbti,extra
cross-versioned: ${sbt.cross.versioned-false} cross-versioned: ${sbt.cross.versioned-false}
@ -22,6 +22,7 @@
[boot] [boot]
directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/} directory: ${sbt.boot.directory-${sbt.global.base-${user.home}/.sbt}/boot/}
lock: ${sbt.boot.lock-true}
[ivy] [ivy]
ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/} ivy-home: ${sbt.ivy.home-${user.home}/.ivy2/}