diff --git a/.scalafmt.conf b/.scalafmt.conf index 0d5990db2..e4ab36511 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -8,11 +8,3 @@ docstrings = JavaDoc # This also seems more idiomatic to include whitespace in import x.{ yyy } spaces.inImportCurlyBraces = true - -# This works around sequence wildcard (`_*`) turning into `_ *` -spaces.beforeSeqWildcard = true - -# Vertical alignment only => for pattern matching -align.tokens.add = [ - { code = "=>", owner = "Case" } -] diff --git a/.travis.yml b/.travis.yml index 3856d1e3d..f899b658c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,9 +6,7 @@ scala: - 2.12.3 script: -# drop scalafmt to dogfood latest 1.0.0-RC before there is an sbt 1.0 release of new-sbt-scalafmt -# - sbt -Dfile.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M ";++$TRAVIS_SCALA_VERSION;mimaReportBinaryIssues;test;scalafmt::test;test:scalafmt::test" - - sbt -Dfile.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M ";++$TRAVIS_SCALA_VERSION;mimaReportBinaryIssues;test" + - sbt -Dfile.encoding=UTF8 -J-XX:ReservedCodeCacheSize=256M ";++$TRAVIS_SCALA_VERSION;mimaReportBinaryIssues;scalafmt::test;test:scalafmt::test;sbt:scalafmt::test;test" cache: directories: diff --git a/build.sbt b/build.sbt index 2b2b4bd16..8b2911f74 100644 --- a/build.sbt +++ b/build.sbt @@ -18,7 +18,8 @@ def commonSettings: Seq[Setting[_]] = Seq( scalacOptions := { val old = scalacOptions.value scalaVersion.value match { - case sv if sv.startsWith("2.10") => old diff List("-Xfuture", "-Ywarn-unused", "-Ywarn-unused-import") + case sv if sv.startsWith("2.10") => + old diff List("-Xfuture", "-Ywarn-unused", "-Ywarn-unused-import") case sv if sv.startsWith("2.11") => old ++ List("-Ywarn-unused", "-Ywarn-unused-import") case _ => old ++ List("-Ywarn-unused", "-Ywarn-unused-import", "-YdisableFlatCpCaching") } @@ -39,13 +40,13 @@ lazy val lmRoot = (project in file(".")) Seq( homepage := Some(url("https://github.com/sbt/librarymanagement")), description := "Library management module for sbt", - scmInfo := Some(ScmInfo( - url("https://github.com/sbt/librarymanagement"), "git@github.com:sbt/librarymanagement.git" - )), + scmInfo := { + val slug = "sbt/librarymanagement" + Some(ScmInfo(url(s"https://github.com/$slug"), s"git@github.com:$slug.git")) + }, bintrayPackage := "librarymanagement", - // scalafmtOnCompile := true, - // scalafmtVersion 1.0.0-RC3 has regression - // scalafmtVersion := "0.6.8", + scalafmtOnCompile := true, + scalafmtVersion := "1.1.0", git.baseVersion := baseVersion, version := { val v = version.value @@ -67,21 +68,28 @@ lazy val lmCore = (project in file("core")) .settings( commonSettings, name := "librarymanagement-core", - libraryDependencies ++= Seq(jsch, - scalaReflect.value, - scalaCompiler.value, - launcherInterface, - gigahorseOkhttp, - okhttpUrlconnection, - sjsonnewScalaJson.value % Optional, - scalaTest, - scalaCheck), + libraryDependencies ++= Seq( + jsch, + scalaReflect.value, + scalaCompiler.value, + launcherInterface, + gigahorseOkhttp, + okhttpUrlconnection, + sjsonnewScalaJson.value % Optional, + scalaTest, + scalaCheck + ), libraryDependencies ++= scalaXml.value, - resourceGenerators in Compile += Def.task( - Util.generateVersionFile( - version.value, resourceManaged.value, streams.value, (compile in Compile).value + resourceGenerators in Compile += Def + .task( + Util.generateVersionFile( + version.value, + resourceManaged.value, + streams.value, + (compile in Compile).value + ) ) - ).taskValue, + .taskValue, managedSourceDirectories in Compile += baseDirectory.value / "src" / "main" / "contraband-scala", sourceManaged in (Compile, generateContrabands) := baseDirectory.value / "src" / "main" / "contraband-scala", @@ -108,7 +116,8 @@ lazy val lmIvy = (project in file("ivy")) baseDirectory.value / "src" / "main" / "contraband-scala", sourceManaged in (Compile, generateContrabands) := baseDirectory.value / "src" / "main" / "contraband-scala", contrabandFormatsForType in generateContrabands in Compile := DatatypeConfig.getFormats, - scalacOptions in (Compile, console) --= Vector("-Ywarn-unused-import", "-Ywarn-unused", "-Xlint"), + scalacOptions in (Compile, console) --= + Vector("-Ywarn-unused-import", "-Ywarn-unused", "-Xlint"), mimaSettings, ) diff --git a/core/src/main/scala/sbt/internal/librarymanagement/cross/CrossVersionUtil.scala b/core/src/main/scala/sbt/internal/librarymanagement/cross/CrossVersionUtil.scala index b9e784a51..c95f035f1 100644 --- a/core/src/main/scala/sbt/internal/librarymanagement/cross/CrossVersionUtil.scala +++ b/core/src/main/scala/sbt/internal/librarymanagement/cross/CrossVersionUtil.scala @@ -42,7 +42,7 @@ object CrossVersionUtil { Some(sbtApiVersion(x.toLong, y.toLong)) case NonReleaseV_n(x, y, z, _) if x.toLong > 0 && (y.toLong > 0 || z.toLong > 0) => Some(sbtApiVersion(x.toLong, y.toLong)) - case _ => None + case _ => None } private def sbtApiVersion(x: Long, y: Long) = { diff --git a/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala b/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala index 36aebaccb..ba0a1318e 100644 --- a/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala +++ b/core/src/main/scala/sbt/librarymanagement/EvictionWarning.scala @@ -83,8 +83,7 @@ object EvictionWarningOptions { defaultGuess ) - lazy val defaultGuess - : Function1[(ModuleID, Option[ModuleID], Option[ScalaModuleInfo]), Boolean] = + lazy val defaultGuess: Function1[(ModuleID, Option[ModuleID], Option[ScalaModuleInfo]), Boolean] = guessSecondSegment orElse guessSemVer orElse guessFalse lazy val guessSecondSegment : PartialFunction[(ModuleID, Option[ModuleID], Option[ScalaModuleInfo]), Boolean] = { diff --git a/core/src/main/scala/sbt/librarymanagement/Extra.scala b/core/src/main/scala/sbt/librarymanagement/Extra.scala index 8c6eebf16..03d0971f7 100644 --- a/core/src/main/scala/sbt/librarymanagement/Extra.scala +++ b/core/src/main/scala/sbt/librarymanagement/Extra.scala @@ -17,8 +17,7 @@ abstract class InclExclRuleFunctions { apply(organization.organization) implicit def stringToExclusionRule(organization: String): InclExclRule = apply(organization) - implicit def organizationArtifactNameToExclusionRule( - oa: OrganizationArtifactName): InclExclRule = + implicit def organizationArtifactNameToExclusionRule(oa: OrganizationArtifactName): InclExclRule = InclExclRule(oa.organization, oa.name, "*", Vector.empty, oa.crossVersion) implicit def moduleIDToExclusionRule(moduleID: ModuleID): InclExclRule = { diff --git a/core/src/main/scala/sbt/librarymanagement/MakePomConfiguration.scala b/core/src/main/scala/sbt/librarymanagement/MakePomConfiguration.scala index 87f0a5cc5..b8e7b46fc 100644 --- a/core/src/main/scala/sbt/librarymanagement/MakePomConfiguration.scala +++ b/core/src/main/scala/sbt/librarymanagement/MakePomConfiguration.scala @@ -77,8 +77,7 @@ final class MakePomConfiguration private (val file: Option[File], def withProcess(process: XNode => XNode): MakePomConfiguration = { copy(process = process) } - def withFilterRepositories( - filterRepositories: MavenRepository => Boolean): MakePomConfiguration = { + def withFilterRepositories(filterRepositories: MavenRepository => Boolean): MakePomConfiguration = { copy(filterRepositories = filterRepositories) } def withAllRepositories(allRepositories: Boolean): MakePomConfiguration = { diff --git a/core/src/main/scala/sbt/librarymanagement/VersionNumber.scala b/core/src/main/scala/sbt/librarymanagement/VersionNumber.scala index 144b67a66..f6a95527c 100644 --- a/core/src/main/scala/sbt/librarymanagement/VersionNumber.scala +++ b/core/src/main/scala/sbt/librarymanagement/VersionNumber.scala @@ -145,8 +145,7 @@ object VersionNumber { case (v1, v2) if (v1.size >= 3) && (v2.size >= 3) => // A normal version number MUST take the form X.Y.Z (v1._1.get, v1._2.get, v1._3.get, v1.tags, v2._1.get, v2._2.get, v2._3.get, v2.tags) match { - case (x1 @ _, y1 @ _, 0, ts1, x2 @ _, y2 @ _, 0, ts2) - if ts1.nonEmpty || ts2.nonEmpty => + case (x1 @ _, y1 @ _, 0, ts1, x2 @ _, y2 @ _, 0, ts2) if ts1.nonEmpty || ts2.nonEmpty => // A pre-release version MAY be denoted by appending a hyphen and a series of dot separated identifiers equalsIgnoreExtra(v1, v2) case (x1, y1, _, _, x2, y2, _, _) => diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala index a90399b8b..30b8c8b1b 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ConvertResolver.scala @@ -9,11 +9,7 @@ import java.util.Collections import org.apache.ivy.core.module.descriptor.DependencyDescriptor import org.apache.ivy.core.resolve.ResolveData import org.apache.ivy.core.settings.IvySettings -import org.apache.ivy.plugins.repository.{ - RepositoryCopyProgressListener, - Resource, - TransferEvent -} +import org.apache.ivy.plugins.repository.{ RepositoryCopyProgressListener, Resource, TransferEvent } import org.apache.ivy.plugins.resolver.{ BasicResolver, DependencyResolver, @@ -402,7 +398,8 @@ private[sbt] object ConvertResolver { case e: java.io.IOException if e.getMessage.contains("destination already exists") => val overwriteWarning = if (destination contains "-SNAPSHOT") s"Attempting to overwrite $destination" - else "Attempting to overwrite $destination (non-SNAPSHOT)\n\tYou need to remove it from the cache manually to take effect." + else + "Attempting to overwrite $destination (non-SNAPSHOT)\n\tYou need to remove it from the cache manually to take effect." import org.apache.ivy.util.Message Message.warn(overwriteWarning) super.put(source, destination, true) diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala index dcf5f3327..c2b5b6cfb 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/Ivy.scala @@ -344,21 +344,43 @@ final class IvySbt(val configuration: IvyConfiguration) { self => // Todo: We just need writing side of this codec. We can clean up the reads. private[sbt] object AltLibraryManagementCodec extends IvyLibraryManagementCodec { import sbt.io.Hash - type InlineIvyHL = (Option[IvyPaths], Vector[Resolver], Vector[Resolver], Vector[ - ModuleConfiguration], Vector[String], Boolean) + type InlineIvyHL = ( + Option[IvyPaths], + Vector[Resolver], + Vector[Resolver], + Vector[ModuleConfiguration], + Vector[String], + Boolean + ) def inlineIvyToHL(i: InlineIvyConfiguration): InlineIvyHL = - (i.paths, i.resolvers, i.otherResolvers, i.moduleConfigurations, - i.checksums, i.managedChecksums) + ( + i.paths, + i.resolvers, + i.otherResolvers, + i.moduleConfigurations, + i.checksums, + i.managedChecksums + ) type ExternalIvyHL = (Option[PlainFileInfo], Array[Byte]) def externalIvyToHL(e: ExternalIvyConfiguration): ExternalIvyHL = - (e.baseDirectory.map(FileInfo.exists.apply), - e.uri.map(Hash.contentsIfLocal).getOrElse(Array.empty)) + ( + e.baseDirectory.map(FileInfo.exists.apply), + e.uri.map(Hash.contentsIfLocal).getOrElse(Array.empty) + ) // Redefine to use a subset of properties, that are serialisable - override implicit lazy val InlineIvyConfigurationFormat: JsonFormat[InlineIvyConfiguration] = { + override implicit lazy val InlineIvyConfigurationFormat + : JsonFormat[InlineIvyConfiguration] = { def hlToInlineIvy(i: InlineIvyHL): InlineIvyConfiguration = { - val (paths, resolvers, otherResolvers, moduleConfigurations, checksums, managedChecksums) = i + val ( + paths, + resolvers, + otherResolvers, + moduleConfigurations, + checksums, + managedChecksums + ) = i InlineIvyConfiguration() .withPaths(paths) .withResolvers(resolvers) diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala index 4cebabdc4..75616642f 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/CachedResolutionResolveEngine.scala @@ -21,10 +21,7 @@ import core.module.descriptor.{ ExcludeRule, IncludeRule } -import core.module.descriptor.{ - OverrideDependencyDescriptorMediator, - DependencyArtifactDescriptor -} +import core.module.descriptor.{ OverrideDependencyDescriptorMediator, DependencyArtifactDescriptor } import core.IvyPatternHelper import org.apache.ivy.util.{ Message, MessageLogger } import org.apache.ivy.plugins.latest.{ ArtifactInfo => IvyArtifactInfo } diff --git a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala index 69ab22cf7..af5c74a83 100644 --- a/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala +++ b/ivy/src/main/scala/sbt/internal/librarymanagement/ivyint/GigahorseUrlHandler.scala @@ -25,8 +25,8 @@ class GigahorseUrlHandler extends AbstractURLHandler { def getURLInfo(url0: URL, timeout: Int): URLInfo = { // Install the ErrorMessageAuthenticator if ("http" == url0.getProtocol() || "https" == url0.getProtocol()) { - IvyAuthenticator.install() - ErrorMessageAuthenticator.install() + IvyAuthenticator.install() + ErrorMessageAuthenticator.install() } val url = normalizeToURL(url0) @@ -72,8 +72,8 @@ class GigahorseUrlHandler extends AbstractURLHandler { def openStream(url0: URL): InputStream = { // Install the ErrorMessageAuthenticator if ("http" == url0.getProtocol() || "https" == url0.getProtocol()) { - IvyAuthenticator.install() - ErrorMessageAuthenticator.install() + IvyAuthenticator.install() + ErrorMessageAuthenticator.install() } val url = normalizeToURL(url0) @@ -104,8 +104,8 @@ class GigahorseUrlHandler extends AbstractURLHandler { def download(src0: URL, dest: File, l: CopyProgressListener): Unit = { // Install the ErrorMessageAuthenticator if ("http" == src0.getProtocol() || "https" == src0.getProtocol()) { - IvyAuthenticator.install() - ErrorMessageAuthenticator.install() + IvyAuthenticator.install() + ErrorMessageAuthenticator.install() } val src = normalizeToURL(src0) @@ -143,9 +143,8 @@ class GigahorseUrlHandler extends AbstractURLHandler { } def upload(source: File, dest0: URL, l: CopyProgressListener): Unit = { - if( ("http" != dest0.getProtocol()) && ("https" != dest0.getProtocol())) { - throw new UnsupportedOperationException( - "URL repository only support HTTP PUT at the moment") + if (("http" != dest0.getProtocol()) && ("https" != dest0.getProtocol())) { + throw new UnsupportedOperationException("URL repository only support HTTP PUT at the moment") } IvyAuthenticator.install() @@ -203,7 +202,8 @@ object GigahorseUrlHandler { private[sbt] def urlFactory = { val client0 = http.underlying[OkHttpClient] - val client = client0.newBuilder() + val client = client0 + .newBuilder() .authenticator(new JavaNetAuthenticator) .build new OkUrlFactory(client) diff --git a/ivy/src/test/scala/VersionNumberSpec.scala b/ivy/src/test/scala/VersionNumberSpec.scala index 4c1b8497a..b7fcdaa4c 100644 --- a/ivy/src/test/scala/VersionNumberSpec.scala +++ b/ivy/src/test/scala/VersionNumberSpec.scala @@ -97,7 +97,8 @@ class VersionNumberSpec extends UnitSpec { } it should "cascade" in generateCorrectCascadingNumbers( "1.0.0-alpha+001+002", - Seq("1.0.0-alpha+001+002", "1.0.0", "1.0")) + Seq("1.0.0-alpha+001+002", "1.0.0", "1.0") + ) "non.space.!?string" should "be parsed" in { beParsedAs("non.space.!?string", Seq(), Seq(), Seq("non.space.!?string")) diff --git a/project/Dependencies.scala b/project/Dependencies.scala index 9f92915e6..fae131ba4 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -47,8 +47,12 @@ object Dependencies { val scalaXml = scala211Module("scala-xml", "1.0.5") val scalaTest = "org.scalatest" %% "scalatest" % "3.0.1" % Test val scalaCheck = "org.scalacheck" %% "scalacheck" % "1.13.4" % Test - val sjsonnew = Def.setting { "com.eed3si9n" %% "sjson-new-core" % contrabandSjsonNewVersion.value } - val sjsonnewScalaJson = Def.setting { "com.eed3si9n" %% "sjson-new-scalajson" % contrabandSjsonNewVersion.value } + val sjsonnew = Def.setting { + "com.eed3si9n" %% "sjson-new-core" % contrabandSjsonNewVersion.value + } + val sjsonnewScalaJson = Def.setting { + "com.eed3si9n" %% "sjson-new-scalajson" % contrabandSjsonNewVersion.value + } val gigahorseOkhttp = "com.eed3si9n" %% "gigahorse-okhttp" % "0.3.0" val okhttpUrlconnection = "com.squareup.okhttp3" % "okhttp-urlconnection" % "3.7.0" diff --git a/project/Util.scala b/project/Util.scala index 62be2772b..5dacc7df8 100644 --- a/project/Util.scala +++ b/project/Util.scala @@ -26,8 +26,7 @@ object Util { val timestamp = formatter.format(new Date) val content = versionLine(version) + "\ntimestamp=" + timestamp val f = dir / "xsbt.version.properties" - if (!f.exists || f.lastModified < lastCompilationTime(analysis) || !containsVersion(f, - version)) { + if (!f.exists || f.lastModified < lastCompilationTime(analysis) || !containsVersion(f, version)) { s.log.info("Writing version information to " + f + " :\n" + content) IO.write(f, content) } diff --git a/project/plugins.sbt b/project/plugins.sbt index 7ddf08986..f82b39957 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,7 +1,6 @@ addSbtPlugin("org.scala-sbt" % "sbt-houserules" % "0.3.3") addSbtPlugin("org.scala-sbt" % "sbt-contraband" % "0.3.0") - -// addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.3") -addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.17") +addSbtPlugin("com.lucidchart" % "sbt-scalafmt" % "1.10") +addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "0.1.17") scalacOptions += "-language:postfixOps"