diff --git a/.travis.yml b/.travis.yml index 4a9e3a500..69ade0192 100644 --- a/.travis.yml +++ b/.travis.yml @@ -35,7 +35,6 @@ env: - SBT_CMD="scripted source-dependencies/*3of3" - SBT_CMD="scripted tests/*" - SBT_CMD="scripted project-load/*" - - SBT_CMD="checkBuildScala211" - SBT_CMD="repoOverrideTest:scripted dependency-management/*" notifications: diff --git a/MIGRATION.md b/MIGRATION.md index d6db3bcec..c9e38e23b 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -3,3 +3,9 @@ Migration notes - `project/Build.scala` style based on `sbt.Build` is removed. Migrate to `build.sbt`. - `Project(...)` constructor is limited to just two parameters. + +- change import in auto plugin to: + +```scala +import sbt._, syntax._, Keys._ +``` diff --git a/build.sbt b/build.sbt index 775183496..2a9d906b4 100644 --- a/build.sbt +++ b/build.sbt @@ -11,8 +11,11 @@ import com.typesafe.tools.mima.plugin.MimaPlugin.mimaDefaultSettings def buildLevelSettings: Seq[Setting[_]] = inThisBuild(Seq( organization := "org.scala-sbt", version := "1.0.0-SNAPSHOT", - bintrayOrganization := Some(if (publishStatus.value == "releases") "typesafe" else "sbt"), - bintrayRepository := s"ivy-${publishStatus.value}", + bintrayOrganization := Some("sbt"), + bintrayRepository := { + if (isSnapshot.value) "maven-releases" + else "maven-snapshots" + }, bintrayPackage := "sbt", bintrayReleaseOnPublish := false, resolvers += Resolver.mavenLocal @@ -21,7 +24,6 @@ def buildLevelSettings: Seq[Setting[_]] = inThisBuild(Seq( def commonSettings: Seq[Setting[_]] = Seq[SettingsDefinition]( scalaVersion := scala211, publishArtifact in packageDoc := false, - publishMavenStyle := false, componentID := None, resolvers += Resolver.typesafeIvyRepo("releases"), resolvers += Resolver.sonatypeRepo("snapshots"), @@ -30,7 +32,7 @@ def commonSettings: Seq[Setting[_]] = Seq[SettingsDefinition]( testOptions += Tests.Argument(TestFrameworks.ScalaCheck, "-w", "1"), javacOptions in compile ++= Seq("-target", "6", "-source", "6", "-Xlint", "-Xlint:-serial"), incOptions := incOptions.value.withNameHashing(true), - crossScalaVersions := Seq(scala211), + crossScalaVersions := Seq(scala211, scala210), bintrayPackage := (bintrayPackage in ThisBuild).value, bintrayRepository := (bintrayRepository in ThisBuild).value, mimaDefaultSettings, @@ -99,6 +101,9 @@ lazy val testingProj = (project in file("testing")). lazy val testAgentProj = (project in file("testing") / "agent"). settings( minimalSettings, + crossScalaVersions := Seq(scala211), + crossPaths := false, + autoScalaLibrary := false, name := "Test Agent", libraryDependencies += testInterface ) @@ -318,15 +323,6 @@ def customCommands: Seq[Setting[_]] = Seq( s"""set scalaVersion in ThisBuild := "$scala211" """ :: state }, - // This is invoked by Travis - commands += Command.command("checkBuildScala211") { state => - s"++ $scala211" :: - // First compile everything before attempting to test - "all compile test:compile" :: - // Now run known working tests. - safeUnitTests.key.label :: - state - }, safeUnitTests := { test.all(safeProjects).value }, diff --git a/main/actions/src/main/scala/sbt/CacheIvy.scala b/main/actions/src/main/scala/sbt/CacheIvy.scala index 1e0fa0c13..2f7561e08 100644 --- a/main/actions/src/main/scala/sbt/CacheIvy.scala +++ b/main/actions/src/main/scala/sbt/CacheIvy.scala @@ -140,23 +140,21 @@ object CacheIvy { } import L5._ - implicit def inlineIvyIC: InputCache[InlineIvyConfiguration] = wrapIn implicit def moduleSettingsIC: InputCache[ModuleSettings] = - unionInputCache[ModuleSettings, PomConfiguration :+: InlineConfiguration :+: InlineConfigurationWithExcludes :+: IvyFileConfiguration :+: HNil] + unionInputCache[ModuleSettings, PomConfiguration :+: InlineConfiguration :+: IvyFileConfiguration :+: HNil] implicit def ivyConfigurationIC: InputCache[IvyConfiguration] = unionInputCache[IvyConfiguration, InlineIvyConfiguration :+: ExternalIvyConfiguration :+: HNil] object L4 { - implicit val inlineWithExcludesToHL = (c: InlineConfigurationWithExcludes) => + implicit val inlineToHL = (c: InlineConfiguration) => c.module :+: c.dependencies :+: c.ivyXML :+: c.configurations :+: c.defaultConfiguration.map(_.name) :+: c.ivyScala :+: c.validate :+: c.overrides :+: c.excludes :+: HNil implicit def moduleConfToHL = (m: ModuleConfiguration) => m.organization :+: m.name :+: m.revision :+: m.resolver :+: HNil - implicit def inlineToHL = (c: InlineConfiguration) => c.module :+: c.dependencies :+: c.ivyXML :+: c.configurations :+: c.defaultConfiguration.map(_.name) :+: c.ivyScala :+: c.validate :+: c.overrides :+: HNil + // implicit def inlineToHL = (c: InlineConfiguration) => c.module :+: c.dependencies :+: c.ivyXML :+: c.configurations :+: c.defaultConfiguration.map(_.name) :+: c.ivyScala :+: c.validate :+: c.overrides :+: HNil } import L4._ - implicit def inlineWithExcludesIC: InputCache[InlineConfigurationWithExcludes] = wrapIn implicit def inlineIC: InputCache[InlineConfiguration] = wrapIn implicit def moduleConfIC: InputCache[ModuleConfiguration] = wrapIn diff --git a/main/actions/src/main/scala/sbt/Doc.scala b/main/actions/src/main/scala/sbt/Doc.scala index 7a71825c2..bbcde8a64 100644 --- a/main/actions/src/main/scala/sbt/Doc.scala +++ b/main/actions/src/main/scala/sbt/Doc.scala @@ -8,7 +8,7 @@ import sbt.internal.inc.{ AnalyzingCompiler, JavaCompiler } import Predef.{ conforms => _, _ } import sbt.internal.util.Types.:+: -import sbt.io.Path._ +import sbt.io.syntax._ import sbt.io.IO import sbinary.DefaultProtocol.FileFormat diff --git a/main/actions/src/main/scala/sbt/Package.scala b/main/actions/src/main/scala/sbt/Package.scala index 1f3c1c694..776fc3baa 100644 --- a/main/actions/src/main/scala/sbt/Package.scala +++ b/main/actions/src/main/scala/sbt/Package.scala @@ -8,7 +8,7 @@ import java.io.File import java.util.jar.{ Attributes, Manifest } import collection.JavaConversions._ import sbt.internal.util.Types.:+: -import sbt.io.Path._ +import sbt.io.syntax._ import sbt.io.IO import sbinary.{ DefaultProtocol, Format } diff --git a/main/actions/src/main/scala/sbt/RawCompileLike.scala b/main/actions/src/main/scala/sbt/RawCompileLike.scala index 61588ab4b..5791b6601 100644 --- a/main/actions/src/main/scala/sbt/RawCompileLike.scala +++ b/main/actions/src/main/scala/sbt/RawCompileLike.scala @@ -7,7 +7,7 @@ import java.io.File import sbt.internal.inc.{ AnalyzingCompiler, ClasspathOptions, JavaCompiler, RawCompiler, ScalaInstance } import Predef.{ conforms => _, _ } -import sbt.io.Path._ +import sbt.io.syntax._ import sbt.io.IO import sbinary.DefaultProtocol.FileFormat diff --git a/main/command/src/main/scala/sbt/BasicCommandStrings.scala b/main/command/src/main/scala/sbt/BasicCommandStrings.scala index 389386c20..d85f13f01 100644 --- a/main/command/src/main/scala/sbt/BasicCommandStrings.scala +++ b/main/command/src/main/scala/sbt/BasicCommandStrings.scala @@ -8,7 +8,7 @@ import sbt.internal.util.complete.HistoryCommands import scala.annotation.tailrec import java.io.File -import sbt.io.Path._ +import sbt.io.syntax._ object BasicCommandStrings { val HelpCommand = "help" diff --git a/main/command/src/main/scala/sbt/MainLoop.scala b/main/command/src/main/scala/sbt/MainLoop.scala index 1ac6ccf23..7aaaf0c4f 100644 --- a/main/command/src/main/scala/sbt/MainLoop.scala +++ b/main/command/src/main/scala/sbt/MainLoop.scala @@ -7,7 +7,7 @@ import scala.annotation.tailrec import java.io.{ File, PrintWriter } import jline.TerminalFactory -import sbt.internal.io.Using +import sbt.io.Using import sbt.internal.util.{ ErrorHandling, GlobalLogBacking, GlobalLogging } import sbt.util.{ AbstractLogger, Logger } diff --git a/main/settings/src/main/scala/sbt/Structure.scala b/main/settings/src/main/scala/sbt/Structure.scala index cd1a84e61..8a49af2cd 100644 --- a/main/settings/src/main/scala/sbt/Structure.scala +++ b/main/settings/src/main/scala/sbt/Structure.scala @@ -11,7 +11,7 @@ import java.net.URI import ConcurrentRestrictions.Tag import Def.{ Initialize, KeyedInitialize, ScopedKey, Setting, setting } import sbt.io.{ FileFilter, Path, PathFinder } -import Path._ +import sbt.io.syntax._ import std.TaskExtra.{ task => mktask, _ } import Task._ import sbt.internal.util.Types._ diff --git a/main/src/main/scala/sbt/BuildPaths.scala b/main/src/main/scala/sbt/BuildPaths.scala index 1070ac57f..1a4c44178 100644 --- a/main/src/main/scala/sbt/BuildPaths.scala +++ b/main/src/main/scala/sbt/BuildPaths.scala @@ -18,7 +18,7 @@ object BuildPaths { val stagingDirectory = AttributeKey[File]("staging-directory", "The directory for staging remote projects.", DSetting) val dependencyBaseDirectory = AttributeKey[File]("dependency-base-directory", "The base directory for caching dependency resolution.", DSetting) - import Path._ + import sbt.io.syntax._ def getGlobalBase(state: State): File = { val default = defaultVersionedGlobalBase(binarySbtVersion(state)) diff --git a/main/src/main/scala/sbt/BuildStructure.scala b/main/src/main/scala/sbt/BuildStructure.scala index e88f27f1a..217233a54 100644 --- a/main/src/main/scala/sbt/BuildStructure.scala +++ b/main/src/main/scala/sbt/BuildStructure.scala @@ -10,7 +10,7 @@ import BuildPaths.outputDirectory import Scope.GlobalScope import BuildStreams.Streams import sbt.internal.{ BuildDef, Load, OldPlugin } -import sbt.io.Path._ +import sbt.io.syntax._ import sbt.internal.util.{ Attributed, AttributeEntry, AttributeKey, AttributeMap, Settings } import sbt.internal.util.Attributed.data import sbt.util.Logger diff --git a/main/src/main/scala/sbt/BuildUtil.scala b/main/src/main/scala/sbt/BuildUtil.scala index 31989f28f..297e50a13 100644 --- a/main/src/main/scala/sbt/BuildUtil.scala +++ b/main/src/main/scala/sbt/BuildUtil.scala @@ -72,7 +72,7 @@ object BuildUtil { } } - def baseImports: Seq[String] = "import scala.xml.{TopScope=>$scope}" :: "import sbt._, Keys._, dsl._, Import._" :: Nil + def baseImports: Seq[String] = "import scala.xml.{TopScope=>$scope}" :: "import sbt._, Keys._, dsl._, syntax._" :: Nil def getImports(unit: BuildUnit): Seq[String] = unit.plugins.detected.imports ++ unit.definitions.dslDefinitions.imports diff --git a/main/src/main/scala/sbt/CommandStrings.scala b/main/src/main/scala/sbt/CommandStrings.scala index 7bbda44d1..94d23526e 100644 --- a/main/src/main/scala/sbt/CommandStrings.scala +++ b/main/src/main/scala/sbt/CommandStrings.scala @@ -284,7 +284,7 @@ defaults """ import java.io.File - import Path._ + import sbt.io.syntax._ def sbtRCs(s: State): Seq[File] = (Path.userHome / sbtrc) :: diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index a8626ed0d..2e721a798 100755 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -50,6 +50,7 @@ import sbt.internal.io.WatchState import sbt.io.{ AllPassFilter, FileFilter, GlobFilter, HiddenFileFilter, IO, NameFilter, NothingFilter, Path, PathFinder, SimpleFileFilter, DirectoryFilter } import Path._ +import sbt.io.syntax._ import Keys._ object Defaults extends BuildCommon { @@ -1046,7 +1047,6 @@ object Defaults extends BuildCommon { } object Classpaths { - import Path._ import Keys._ import Scope.ThisScope import Defaults._ @@ -1341,7 +1341,7 @@ object Classpaths { new IvySbt(conf) } def moduleSettings0: Initialize[Task[ModuleSettings]] = Def.task { - new InlineConfigurationWithExcludes(projectID.value, projectInfo.value, allDependencies.value, dependencyOverrides.value, excludeDependencies.value, + new InlineConfiguration(projectID.value, projectInfo.value, allDependencies.value, dependencyOverrides.value, excludeDependencies.value, ivyXML.value, ivyConfigurations.value, defaultConfiguration.value, ivyScala.value, ivyValidate.value, conflictManager.value) } diff --git a/main/src/main/scala/sbt/Main.scala b/main/src/main/scala/sbt/Main.scala index d899587e6..8c2dd791c 100644 --- a/main/src/main/scala/sbt/Main.scala +++ b/main/src/main/scala/sbt/Main.scala @@ -16,7 +16,7 @@ import Project.LoadAction import scala.annotation.tailrec import sbt.io.IO -import sbt.io.Path._ +import sbt.io.syntax._ import StandardMain._ import java.io.File diff --git a/main/src/main/scala/sbt/Opts.scala b/main/src/main/scala/sbt/Opts.scala index 4f5e1e19d..201eb3bbf 100644 --- a/main/src/main/scala/sbt/Opts.scala +++ b/main/src/main/scala/sbt/Opts.scala @@ -9,6 +9,7 @@ import java.io.File import java.net.URL import sbt.io.Path +import Path._ /** Options for well-known tasks. */ object Opts { @@ -30,7 +31,7 @@ object Opts { mappings.map { case (f, u) => s"${f.getAbsolutePath}#${u.toExternalForm}" }.mkString("-doc-external-doc:", ",", "") :: Nil } object resolver { - import Path._ + import sbt.io.syntax._ val sonatypeReleases = Resolver.sonatypeRepo("releases") val sonatypeSnapshots = Resolver.sonatypeRepo("snapshots") val sonatypeStaging = new MavenRepository("sonatype-staging", "https://oss.sonatype.org/service/local/staging/deploy/maven2") @@ -40,7 +41,7 @@ object Opts { object DefaultOptions { import Opts._ - import Path._ + import sbt.io.syntax._ import BuildPaths.{ getGlobalBase, getGlobalSettingsDirectory } import Project.{ extract, richInitializeTask } import Def.Setting diff --git a/main/src/main/scala/sbt/internal/Load.scala b/main/src/main/scala/sbt/internal/Load.scala index a7a6213d0..f02d566ef 100755 --- a/main/src/main/scala/sbt/internal/Load.scala +++ b/main/src/main/scala/sbt/internal/Load.scala @@ -274,7 +274,7 @@ private[sbt] object Load { // put cleanups there, perhaps. if (keepSet.nonEmpty) { def keepFile(f: File) = keepSet(f.getCanonicalPath) - import Path._ + import sbt.io.syntax._ val existing = (baseTarget.allPaths.get).filterNot(_.isDirectory) val toDelete = existing.filterNot(keepFile) if (toDelete.nonEmpty) { @@ -799,7 +799,7 @@ private[sbt] object Load { def hasDefinition(dir: File) = { - import Path._ + import sbt.io.syntax._ (dir * -GlobFilter(DefaultTargetName)).get.nonEmpty } def noPlugins(dir: File, config: LoadBuildConfiguration): sbt.LoadedPlugins = diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 42ff99bcd..9e7677a42 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -9,10 +9,10 @@ object Dependencies { lazy val scala211 = "2.11.8" // sbt modules - val utilVersion = "0.1.0-M11" - val ioVersion = "1.0.0-M3" - val zincVersion = "0.1.0-M3-84942e08e7b11c6ef831c6443fc31bbff19ed3c2-SNAPSHOT" - val librarymanagementVersion = "0.1.0-27bf18f7a3d945d84f72bb0e0e4aa98151417609-SNAPSHOT" + val ioVersion = "1.0.0-M5" + val utilVersion = "0.1.0-M12" + val librarymanagementVersion = "0.1.0-M8" + val zincVersion = "1.0.0-M1" lazy val sbtIO = "org.scala-sbt" %% "io" % ioVersion lazy val utilCollection = "org.scala-sbt" %% "util-collection" % utilVersion lazy val utilLogging = "org.scala-sbt" %% "util-logging" % utilVersion @@ -26,8 +26,8 @@ object Dependencies { lazy val utilTracking = "org.scala-sbt" %% "util-tracking" % utilVersion lazy val utilScripted = "org.scala-sbt" %% "util-scripted" % utilVersion lazy val libraryManagement = "org.scala-sbt" %% "librarymanagement" % librarymanagementVersion - lazy val launcherInterface = "org.scala-sbt" % "launcher-interface" % "1.0.0-M1" - lazy val rawLauncher = "org.scala-sbt" % "launcher" % "1.0.0-M1" + lazy val launcherInterface = "org.scala-sbt" % "launcher-interface" % "1.0.0" + lazy val rawLauncher = "org.scala-sbt" % "launcher" % "1.0.0" lazy val testInterface = "org.scala-sbt" % "test-interface" % "1.0" lazy val zinc = "org.scala-sbt" %% "zinc" % zincVersion diff --git a/sbt/src/main/scala/Import.scala b/sbt/src/main/scala/Import.scala index d8d293a35..10285ce9a 100644 --- a/sbt/src/main/scala/Import.scala +++ b/sbt/src/main/scala/Import.scala @@ -1,6 +1,13 @@ package sbt -object Import { +trait Import { + type Setting[T] = Def.Setting[T] + type ScopedKey[T] = Def.ScopedKey[T] + type SettingsDefinition = Def.SettingsDefinition + type File = java.io.File + type URI = java.net.URI + type URL = java.net.URL + // sbt.io val AllPassFilter = sbt.io.AllPassFilter val DirectoryFilter = sbt.io.DirectoryFilter @@ -17,10 +24,8 @@ object Import { type NameFilter = sbt.io.NameFilter val NothingFilter = sbt.io.NothingFilter val Path = sbt.io.Path - type PathExtra = sbt.io.PathExtra val PathFinder = sbt.io.PathFinder type PathFinder = sbt.io.PathFinder - type PathLow = sbt.io.PathLow type PatternFilter = sbt.io.PatternFilter type RichFile = sbt.io.RichFile type SimpleFileFilter = sbt.io.SimpleFileFilter @@ -362,8 +367,6 @@ object Import { type ModuleSettings = sbt.internal.librarymanagement.ModuleSettings val InlineConfiguration = sbt.internal.librarymanagement.InlineConfiguration type InlineConfiguration = sbt.internal.librarymanagement.InlineConfiguration - val InlineConfigurationWithExcludes = sbt.internal.librarymanagement.InlineConfigurationWithExcludes - type InlineConfigurationWithExcludes = sbt.internal.librarymanagement.InlineConfigurationWithExcludes type InlineIvyConfiguration = sbt.internal.librarymanagement.InlineIvyConfiguration type InvalidComponent = sbt.internal.librarymanagement.InvalidComponent val IvyActions = sbt.internal.librarymanagement.IvyActions diff --git a/sbt/src/main/scala/ProcessExtra.scala b/sbt/src/main/scala/ProcessExtra.scala index 9a3c020c4..1645c6147 100644 --- a/sbt/src/main/scala/ProcessExtra.scala +++ b/sbt/src/main/scala/ProcessExtra.scala @@ -1,6 +1,8 @@ package sbt import java.lang.{ Process => JProcess, ProcessBuilder => JProcessBuilder } +import java.net.URL +import java.io.File trait ProcessExtra { import scala.sys.process._ @@ -8,8 +10,8 @@ trait ProcessExtra { implicit def builderToProcess(builder: JProcessBuilder): ProcessBuilder = apply(builder) implicit def fileToProcess(file: File): ProcessBuilder.FileBuilder = apply(file) implicit def urlToProcess(url: URL): ProcessBuilder.URLBuilder = apply(url) - @deprecated("Use string interpolation", "0.13.0") - implicit def xmlToProcess(command: scala.xml.Elem): ProcessBuilder = apply(command) + // @deprecated("Use string interpolation", "0.13.0") + // implicit def xmlToProcess(command: scala.xml.Elem): ProcessBuilder = apply(command) implicit def buildersToProcess[T](builders: Seq[T])(implicit convert: T => ProcessBuilder.Source): Seq[ProcessBuilder.Source] = applySeq(builders) implicit def stringToProcess(command: String): ProcessBuilder = apply(command) diff --git a/sbt/src/main/scala/package.scala b/sbt/src/main/scala/package.scala index 48f00804a..71288c370 100644 --- a/sbt/src/main/scala/package.scala +++ b/sbt/src/main/scala/package.scala @@ -1,47 +1,4 @@ /* sbt -- Simple Build Tool * Copyright 2010, 2011 Mark Harrah */ -package object sbt extends sbt.std.TaskExtra with sbt.internal.util.Types with sbt.ProcessExtra - with sbt.internal.librarymanagement.impl.DependencyBuilders with sbt.io.PathExtra with sbt.ProjectExtra - with sbt.internal.librarymanagement.DependencyFilterExtra with sbt.BuildExtra with sbt.TaskMacroExtra - with sbt.ScopeFilter.Make { - type Setting[T] = Def.Setting[T] - type ScopedKey[T] = Def.ScopedKey[T] - type SettingsDefinition = Def.SettingsDefinition - type File = java.io.File - type URI = java.net.URI - type URL = java.net.URL - - object CompileOrder { - val JavaThenScala = xsbti.compile.CompileOrder.JavaThenScala - val ScalaThenJava = xsbti.compile.CompileOrder.ScalaThenJava - val Mixed = xsbti.compile.CompileOrder.Mixed - } - type CompileOrder = xsbti.compile.CompileOrder - - implicit def maybeToOption[S](m: xsbti.Maybe[S]): Option[S] = - if (m.isDefined) Some(m.get) else None - def uri(s: String): URI = new URI(s) - def file(s: String): File = new File(s) - def url(s: String): URL = new URL(s) - - final val ThisScope = Scope.ThisScope - final val GlobalScope = Scope.GlobalScope - - import sbt.librarymanagement.{ Configuration, Configurations => C } - final val Compile = C.Compile - final val Test = C.Test - final val Runtime = C.Runtime - final val IntegrationTest = C.IntegrationTest - final val Default = C.Default - final val Provided = C.Provided - // java.lang.System is more important, so don't alias this one - // final val System = C.System - final val Optional = C.Optional - def config(s: String): Configuration = C.config(s) - - import language.experimental.macros - def settingKey[T](description: String): SettingKey[T] = macro std.KeyMacro.settingKeyImpl[T] - def taskKey[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] - def inputKey[T](description: String): InputKey[T] = macro std.KeyMacro.inputKeyImpl[T] -} +package object sbt extends Import diff --git a/sbt/src/main/scala/syntax.scala b/sbt/src/main/scala/syntax.scala new file mode 100644 index 000000000..838eb123a --- /dev/null +++ b/sbt/src/main/scala/syntax.scala @@ -0,0 +1,64 @@ +package sbt + +object syntax extends syntax + +abstract class syntax extends IOSyntax0 with sbt.std.TaskExtra with sbt.internal.util.Types with sbt.ProcessExtra + with sbt.internal.librarymanagement.impl.DependencyBuilders with sbt.ProjectExtra + with sbt.internal.librarymanagement.DependencyFilterExtra with sbt.BuildExtra with sbt.TaskMacroExtra + with sbt.ScopeFilter.Make { + + // IO + def uri(s: String): URI = new URI(s) + def file(s: String): File = new File(s) + def url(s: String): URL = new URL(s) + implicit def fileToRichFile(file: File): sbt.io.RichFile = new sbt.io.RichFile(file) + implicit def filesToFinder(cc: Traversable[File]): sbt.io.PathFinder = sbt.io.PathFinder.strict(cc) + + // others + + object CompileOrder { + val JavaThenScala = xsbti.compile.CompileOrder.JavaThenScala + val ScalaThenJava = xsbti.compile.CompileOrder.ScalaThenJava + val Mixed = xsbti.compile.CompileOrder.Mixed + } + type CompileOrder = xsbti.compile.CompileOrder + + implicit def maybeToOption[S](m: xsbti.Maybe[S]): Option[S] = + if (m.isDefined) Some(m.get) else None + + final val ThisScope = Scope.ThisScope + final val GlobalScope = Scope.GlobalScope + + import sbt.{ Configurations => C } + final val Compile = C.Compile + final val Test = C.Test + final val Runtime = C.Runtime + final val IntegrationTest = C.IntegrationTest + final val Default = C.Default + final val Provided = C.Provided + // java.lang.System is more important, so don't alias this one + // final val System = C.System + final val Optional = C.Optional + def config(s: String): Configuration = C.config(s) + + import language.experimental.macros + def settingKey[T](description: String): SettingKey[T] = macro std.KeyMacro.settingKeyImpl[T] + def taskKey[T](description: String): TaskKey[T] = macro std.KeyMacro.taskKeyImpl[T] + def inputKey[T](description: String): InputKey[T] = macro std.KeyMacro.inputKeyImpl[T] +} + +// Todo share this this io.syntax +private[sbt] trait IOSyntax0 extends IOSyntax1 { + implicit def alternative[A, B](f: A => Option[B]): Alternative[A, B] = + new Alternative[A, B] { + def |(g: A => Option[B]) = + (a: A) => f(a) orElse g(a) + } +} +private[sbt] trait Alternative[A, B] { + def |(g: A => Option[B]): A => Option[B] +} + +private[sbt] trait IOSyntax1 { + implicit def singleFileFinder(file: File): sbt.io.PathFinder = sbt.io.PathFinder(file) +} diff --git a/sbt/src/sbt-test/actions/aggregate/project/Marker.scala b/sbt/src/sbt-test/actions/aggregate/project/Marker.scala index c4624579a..72f47b8fa 100644 --- a/sbt/src/sbt-test/actions/aggregate/project/Marker.scala +++ b/sbt/src/sbt-test/actions/aggregate/project/Marker.scala @@ -1,6 +1,4 @@ -import sbt._ -import Keys._ -import Import._ +import sbt._, syntax._, Keys._ import Def.Initialize object Marker extends AutoPlugin { diff --git a/sbt/src/sbt-test/actions/compile-time-only/changes/A1.scala b/sbt/src/sbt-test/actions/compile-time-only/changes/A1.scala index 40e72ac6e..d83a42865 100644 --- a/sbt/src/sbt-test/actions/compile-time-only/changes/A1.scala +++ b/sbt/src/sbt-test/actions/compile-time-only/changes/A1.scala @@ -1,5 +1,4 @@ -import sbt._ -import Import._ +import sbt._, syntax._, Keys._ import Def.Initialize import complete.{DefaultParsers, Parser} diff --git a/sbt/src/sbt-test/actions/compile-time-only/changes/A3.scala b/sbt/src/sbt-test/actions/compile-time-only/changes/A3.scala index 09913bebc..8a4a3a849 100644 --- a/sbt/src/sbt-test/actions/compile-time-only/changes/A3.scala +++ b/sbt/src/sbt-test/actions/compile-time-only/changes/A3.scala @@ -1,5 +1,4 @@ -import sbt._ -import Import._ +import sbt._, syntax._, Keys._ import Def.Initialize import complete.{DefaultParsers, Parser} diff --git a/sbt/src/sbt-test/actions/state/build.sbt b/sbt/src/sbt-test/actions/state/build.sbt index 7b57aac9e..fa3b59606 100644 --- a/sbt/src/sbt-test/actions/state/build.sbt +++ b/sbt/src/sbt-test/actions/state/build.sbt @@ -1,4 +1,3 @@ -import Import._ import complete.Parser import complete.DefaultParsers._ import sbinary.DefaultProtocol._ diff --git a/sbt/src/sbt-test/project/auto-plugins/project/Q.scala b/sbt/src/sbt-test/project/auto-plugins/project/Q.scala index bc3461b14..9819d5fda 100644 --- a/sbt/src/sbt-test/project/auto-plugins/project/Q.scala +++ b/sbt/src/sbt-test/project/auto-plugins/project/Q.scala @@ -1,8 +1,6 @@ package sbttest // you need package http://stackoverflow.com/questions/9822008/ - import sbt._ - import Import._ - import sbt.Keys.{name, resolvedScoped, organization } + import sbt._, syntax._, Keys._ import java.util.concurrent.atomic.{AtomicInteger => AInt} object Imports diff --git a/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala b/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala index c1293a3cf..352643e3c 100644 --- a/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala +++ b/sbt/src/sbt-test/project/binary-plugin/changes/define/A.scala @@ -1,8 +1,6 @@ package sbttest // you need package http://stackoverflow.com/questions/9822008/ -import sbt._ -import Keys._ -import Import._ +import sbt._, syntax._, Keys._ object C extends AutoPlugin { object autoImport { diff --git a/sbt/src/sbt-test/project/session-update-from-cmd/project/Common.scala b/sbt/src/sbt-test/project/session-update-from-cmd/project/Common.scala index 4d9fc6660..94f7f2a81 100644 --- a/sbt/src/sbt-test/project/session-update-from-cmd/project/Common.scala +++ b/sbt/src/sbt-test/project/session-update-from-cmd/project/Common.scala @@ -1,6 +1,4 @@ -import sbt._ -import Keys._ -import Import._ +import sbt._, syntax._, Keys._ object Common { lazy val k1 = taskKey[Unit]("") diff --git a/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala b/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala index e74a8d365..1a663350d 100644 --- a/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala +++ b/scripted/plugin/src/main/scala/sbt/ScriptedPlugin.scala @@ -11,9 +11,7 @@ import sbt.internal.inc.ModuleUtilities import java.lang.reflect.{ InvocationTargetException, Method } import java.util.Properties -import sbt.librarymanagement.Configuration - -import sbt.io.{ AllPassFilter, PathFinder } +import sbt.syntax._ object ScriptedPlugin extends AutoPlugin { override def requires = plugins.JvmPlugin diff --git a/scripted/sbt/src/main/scala/sbt/test/ScriptedTests.scala b/scripted/sbt/src/main/scala/sbt/test/ScriptedTests.scala index 24755030a..ed53c7f6d 100644 --- a/scripted/sbt/src/main/scala/sbt/test/ScriptedTests.scala +++ b/scripted/sbt/src/main/scala/sbt/test/ScriptedTests.scala @@ -29,7 +29,7 @@ final class ScriptedTests(resourceBaseDirectory: File, bufferLog: Boolean, launc def scriptedTest(group: String, name: String, log: Logger): Seq[() => Option[String]] = scriptedTest(group, name, emptyCallback, log) def scriptedTest(group: String, name: String, prescripted: File => Unit, log: Logger): Seq[() => Option[String]] = { - import Path._ + import sbt.io.syntax._ import GlobFilter._ var failed = false for (groupDir <- (resourceBaseDirectory * group).get; nme <- (groupDir * name).get) yield { diff --git a/tasks/standard/src/main/scala/sbt/std/Streams.scala b/tasks/standard/src/main/scala/sbt/std/Streams.scala index 17fd19677..064ac8d7b 100644 --- a/tasks/standard/src/main/scala/sbt/std/Streams.scala +++ b/tasks/standard/src/main/scala/sbt/std/Streams.scala @@ -10,7 +10,7 @@ import java.io.{ Closeable, File, FileInputStream, FileOutputStream, InputStream import sbt.internal.io.DeferredWriter import sbt.io.IO -import sbt.io.Path._ +import sbt.io.syntax._ import sbt.util.Logger