Merge pull request #312 from eed3si9n/wip/http

Deprecate HTTP resolvers
This commit is contained in:
eugene yokota 2019-08-13 22:59:39 -04:00 committed by GitHub
commit f58fa46c8c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 53 additions and 5 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

@ -25,7 +25,7 @@ before_install:
- source "$HOME/.sdkman/bin/sdkman-init.sh"
install:
- sdk install java $(sdk list java | grep -o "$ADOPTOPENJDK\.[0-9\.]*hs-adpt" | tail -1)
- sdk install java $(sdk list java | grep -o "$ADOPTOPENJDK\.[0-9\.]*hs-adpt" | head -1)
- bin/fixpreloaded.sh
- unset JAVA_HOME
- java -Xmx32m -version

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"
}
}