From 2acad5bcb2a78cfe8de76a7449a221288f216654 Mon Sep 17 00:00:00 2001 From: Jentsch Date: Sun, 19 Mar 2017 12:56:31 +0100 Subject: [PATCH 1/6] Replaced console.err.println by sbt logger --- .../src/main/scala-2.10/coursier/CoursierPlugin.scala | 2 +- sbt-coursier/src/main/scala-2.10/coursier/Settings.scala | 8 +++++--- sbt-coursier/src/sbt-test/sbt-coursier/from/build.sbt | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/sbt-coursier/src/main/scala-2.10/coursier/CoursierPlugin.scala b/sbt-coursier/src/main/scala-2.10/coursier/CoursierPlugin.scala index 33201a826..fe47affd9 100644 --- a/sbt-coursier/src/main/scala-2.10/coursier/CoursierPlugin.scala +++ b/sbt-coursier/src/main/scala-2.10/coursier/CoursierPlugin.scala @@ -79,7 +79,7 @@ object CoursierPlugin extends AutoPlugin { coursierArtifactsChecksums := Seq(None), coursierCachePolicies := CachePolicy.default, coursierTtl := Cache.defaultTtl, - coursierVerbosity := Settings.defaultVerbosityLevel, + coursierVerbosity := Settings.defaultVerbosityLevel(sLog.value), mavenProfiles := Set.empty, coursierResolvers <<= Tasks.coursierResolversTask, coursierRecursiveResolvers <<= Tasks.coursierRecursiveResolversTask, diff --git a/sbt-coursier/src/main/scala-2.10/coursier/Settings.scala b/sbt-coursier/src/main/scala-2.10/coursier/Settings.scala index 0629d1726..f36b4963a 100644 --- a/sbt-coursier/src/main/scala-2.10/coursier/Settings.scala +++ b/sbt-coursier/src/main/scala-2.10/coursier/Settings.scala @@ -1,5 +1,7 @@ package coursier +import sbt.Logger + import scala.util.{Failure, Success, Try} object Settings { @@ -10,7 +12,7 @@ object Settings { else 1 - def defaultVerbosityLevel: Int = { + def defaultVerbosityLevel(logger: Logger): Int = { def fromOption(value: Option[String], description: String): Option[Int] = value.filter(_.nonEmpty).flatMap { @@ -18,8 +20,8 @@ object Settings { Try(str.toInt) match { case Success(level) => Some(level) case Failure(ex) => - Console.err.println( - s"Warning: unrecognized $description value (should be an integer), ignoring it." + logger.warn( + s"unrecognized $description value (should be an integer), ignoring it." ) None } diff --git a/sbt-coursier/src/sbt-test/sbt-coursier/from/build.sbt b/sbt-coursier/src/sbt-test/sbt-coursier/from/build.sbt index 9640ce8da..4002a114f 100644 --- a/sbt-coursier/src/sbt-test/sbt-coursier/from/build.sbt +++ b/sbt-coursier/src/sbt-test/sbt-coursier/from/build.sbt @@ -14,7 +14,7 @@ libraryDependencies += "com.chuusai" %% "shapeless" % "2.3.41" from { if (!f.exists()) { val url0 = "https://repo1.maven.org/maven2/com/chuusai/shapeless_2.11/2.3.0/shapeless_2.11-2.3.0.jar" - scala.Console.err.println(s"Fetching $url0") + sLog.value.warn(s"Fetching $url0") val url = new java.net.URL(url0) From 711e744d7580caf71f12dbf1c0728243f2633276 Mon Sep 17 00:00:00 2001 From: Jentsch Date: Sun, 19 Mar 2017 14:00:10 +0100 Subject: [PATCH 2/6] Let compiler explain warnings --- build.sbt | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/build.sbt b/build.sbt index 80679446c..c0f3165ea 100644 --- a/build.sbt +++ b/build.sbt @@ -308,8 +308,8 @@ lazy val cli = project def zipEntries(zipStream: ZipInputStream): Iterator[(ZipEntry, Array[Byte])] = new Iterator[(ZipEntry, Array[Byte])] { - var nextEntry = Option.empty[ZipEntry] - def update() = + private var nextEntry = Option.empty[ZipEntry] + private def update() = nextEntry = Option(zipStream.getNextEntry) update() @@ -623,12 +623,14 @@ lazy val scalaVersionAgnosticCommonSettings = Seq( Resolver.sonatypeRepo("releases") ), scalacOptions ++= { - scalaBinaryVersion.value match { + val targetJvm = scalaBinaryVersion.value match { case "2.10" | "2.11" => Seq("-target:jvm-1.6") case _ => Seq() } + + targetJvm ++ Seq("-feature", "-deprecation") }, javacOptions ++= { scalaBinaryVersion.value match { From a244509b67919f6c834456e722f17b34cd8d5f29 Mon Sep 17 00:00:00 2001 From: Jentsch Date: Sun, 19 Mar 2017 14:27:37 +0100 Subject: [PATCH 3/6] Replaced structural types by actual classes --- .../src/main/scala-2.10/coursier/Structure.scala | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/sbt-coursier/src/main/scala-2.10/coursier/Structure.scala b/sbt-coursier/src/main/scala-2.10/coursier/Structure.scala index 1b687fbb9..b043e0c50 100644 --- a/sbt-coursier/src/main/scala-2.10/coursier/Structure.scala +++ b/sbt-coursier/src/main/scala-2.10/coursier/Structure.scala @@ -6,12 +6,11 @@ import scala.language.implicitConversions // things from sbt-structure object Structure { - import Def.Initialize._ - def structure(state: State): Load.BuildStructure = + def structure(state: State): BuildStructure = sbt.Project.structure(state) - implicit def `enrich SettingKey`[T](key: SettingKey[T]) = new { + implicit class `enrich SettingKey`[T](key: SettingKey[T]) { def find(state: State): Option[T] = key.get(structure(state).data) @@ -22,7 +21,7 @@ object Structure { find(state).getOrElse(default) } - implicit def `enrich TaskKey`[T](key: TaskKey[T]) = new { + implicit class `enrich TaskKey`[T](key: TaskKey[T]) { def find(state: State): Option[sbt.Task[T]] = key.get(structure(state).data) @@ -33,10 +32,5 @@ object Structure { val tasks = projects.flatMap(p => key.in(p).get(structure(state).data).map(_.map(it => (p, it)))) std.TaskExtra.joinTasks(tasks).join.map(_.toMap) } - - def forAllConfigurations(state: State, configurations: Seq[sbt.Configuration]): sbt.Task[Map[sbt.Configuration, T]] = { - val tasks = configurations.flatMap(c => key.in(c).get(structure(state).data).map(_.map(it => (c, it)))) - std.TaskExtra.joinTasks(tasks).join.map(_.toMap) - } } } From 7caee99846ff49f578c67a3032c4cf08bd4fbdd6 Mon Sep 17 00:00:00 2001 From: Jentsch Date: Sun, 19 Mar 2017 14:45:51 +0100 Subject: [PATCH 4/6] Prevent compiler from inferring existential --- cache/src/main/scala/coursier/Cache.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index 48f96d3cc..55e792356 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -243,14 +243,14 @@ object Cache { Option(handlerClsCache.get(protocol)) match { case None => val clsName = s"coursier.cache.protocol.${protocol.capitalize}Handler" - def clsOpt(loader: ClassLoader) = + def clsOpt(loader: ClassLoader): Option[Class[_]] = try Some(loader.loadClass(clsName)) catch { case _: ClassNotFoundException => None } - val clsOpt0 = clsOpt(Thread.currentThread().getContextClassLoader) + val clsOpt0: Option[Class[_]] = clsOpt(Thread.currentThread().getContextClassLoader) .orElse(clsOpt(getClass.getClassLoader)) def printError(e: Exception): Unit = From 363a841f5ac02d5397cbdea9fe41ce1d982c23fc Mon Sep 17 00:00:00 2001 From: Jentsch Date: Sun, 19 Mar 2017 14:47:38 +0100 Subject: [PATCH 5/6] Replaced linesIterator by not deprecated lines method --- cache/src/main/scala/coursier/Cache.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index 55e792356..e98ce2de8 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -758,7 +758,7 @@ object Cache { def parseChecksum(content: String): Option[BigInteger] = { val lines = content - .linesIterator + .lines .toVector parseChecksumLine(lines) orElse parseChecksumAlternative(lines) From 330134d5d926ac92d8ab007b6b1ba66c00f2fc7d Mon Sep 17 00:00:00 2001 From: Jentsch Date: Sun, 19 Mar 2017 14:50:27 +0100 Subject: [PATCH 6/6] Simplified handling of undefined settings (Also avoiding null) --- sbt-coursier/src/main/scala-2.10/coursier/Tasks.scala | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/sbt-coursier/src/main/scala-2.10/coursier/Tasks.scala b/sbt-coursier/src/main/scala-2.10/coursier/Tasks.scala index 547fa8c70..8c6d7ea0c 100644 --- a/sbt-coursier/src/main/scala-2.10/coursier/Tasks.scala +++ b/sbt-coursier/src/main/scala-2.10/coursier/Tasks.scala @@ -167,7 +167,7 @@ object Tasks { } yield { val publish = publishArtifact.in(projectRef).in(pkgTask).in(config).getOrElse(state, false) if (publish) - Option(artifact.in(projectRef).in(pkgTask).in(config).getOrElse(state, null)) + artifact.in(projectRef).in(pkgTask).in(config).find(state) .map(targetConfig -> _) else None @@ -200,9 +200,7 @@ object Tasks { // Second-way of getting artifacts from SBT // No obvious way of getting the corresponding publishArtifact value for the ones // only here, it seems. - val extraSbtArtifacts = Option(artifacts.in(projectRef).getOrElse(state, null)) - .toSeq - .flatten + val extraSbtArtifacts = artifacts.in(projectRef).getOrElse(state, Nil) .filterNot(stdArtifactsSet) // Seems that SBT does that - if an artifact has no configs,