Deprecate HTTP resolvers

Ref https://github.com/sbt/sbt/issues/4905
This commit is contained in:
Eugene Yokota 2019-08-01 16:20:22 -04:00
parent bc2650c551
commit c89695b4b2
7 changed files with 52 additions and 4 deletions

View File

@ -1,4 +1,4 @@
version = 2.0.0-RC6
version = 2.0.0
maxColumn = 100
project.git = true
project.excludeFilters = [ /sbt-test/, /input_sources/, /contraband-scala/ ]

View File

@ -7,7 +7,7 @@ package sbt.librarymanagement
final class URLRepository private (
name: String,
patterns: sbt.librarymanagement.Patterns) extends sbt.librarymanagement.PatternsBasedRepository(name, patterns) with Serializable {
Resolver.validatePatterns(patterns)
override def equals(o: Any): Boolean = o match {

View File

@ -641,7 +641,10 @@
"name": "URLRepository",
"namespace": "sbt.librarymanagement",
"target": "Scala",
"type": "record"
"type": "record",
"extra": [
"Resolver.validatePatterns(patterns)"
]
},
{
"name": "SshBasedRepository",

View File

@ -69,6 +69,7 @@ object DependencyBuilders {
final class RepositoryName private[sbt] (name: String) {
def at(location: String) = {
nonEmpty(location, "Repository location")
Resolver.validateUrlString(location)
MavenRepository(name, location)
}
}

View File

@ -99,7 +99,10 @@ private[librarymanagement] abstract class ModuleIDExtra {
* This value is only consulted if the module is not found in a repository.
* It is not included in published metadata.
*/
def from(url: String) = artifacts(Artifact(name, new URL(url)))
def from(url: String) = {
Resolver.validateUrlString(url)
artifacts(Artifact(name, new URL(url)))
}
/** Adds a dependency on the artifact for this module with classifier `c`. */
def classifier(c: String) = artifacts(Artifact(name, c))

View File

@ -7,6 +7,7 @@ import java.io.{ IOException, File }
import java.net.URL
import scala.xml.XML
import org.xml.sax.SAXParseException
import sbt.util.{ Level, LogExchange }
final class RawRepository(val resolver: AnyRef, name: String) extends Resolver(name) {
override def toString = "Raw(" + resolver.toString + ")"
@ -403,4 +404,28 @@ private[librarymanagement] abstract class ResolverFunctions {
val pList = Vector(localBasePattern)
Patterns().withIvyPatterns(pList).withArtifactPatterns(pList).withIsMavenCompatible(false)
}
lazy val log = {
val log0 = LogExchange.logger("sbt.librarymanagement.ResolverExtra")
LogExchange.bindLoggerAppenders(
"sbt.librarymanagement.ResolverExtra",
List(LogExchange.buildAsyncStdout -> Level.Info)
)
log0
}
private[sbt] def warnHttp(value: String): Unit = {
log.warn(s"insecure HTTP request is deprecated '$value'; switch to HTTPS")
}
private[sbt] def validatePatterns(patterns: Patterns): Unit = {
val ivy = patterns.ivyPatterns.headOption map (_.startsWith("http:"))
val art = patterns.artifactPatterns.headOption map (_.startsWith("http:"))
(ivy orElse art) foreach { _ =>
warnHttp(patterns.toString)
}
}
private[sbt] def validateUrlString(url: String): Unit = {
if (url.startsWith("http:")) {
warnHttp(url)
}
}
}

View File

@ -0,0 +1,16 @@
package sbttest
import java.net.URL
import org.scalatest._
import sbt.librarymanagement._
import sbt.librarymanagement.syntax._
class ResolverSpec extends FunSuite with DiagrammedAssertions {
test("Resolver.url") {
Resolver.url("Test Repo", new URL("http://example.com/"))(Resolver.ivyStylePatterns)
}
test("at") {
"something" at "http://example.com"
}
}