mirror of https://github.com/sbt/sbt.git
Refactor system properties lookup
This commit is contained in:
parent
705f64c8a4
commit
d0ce65378c
|
|
@ -0,0 +1,58 @@
|
|||
/*
|
||||
* sbt
|
||||
* Copyright 2011 - 2018, Lightbend, Inc.
|
||||
* Copyright 2008 - 2010, Mark Harrah
|
||||
* Licensed under Apache License 2.0 (see LICENSE)
|
||||
*/
|
||||
|
||||
package sbt
|
||||
package internal
|
||||
package librarymanagement
|
||||
|
||||
import java.util.Locale
|
||||
|
||||
object LMSysProp {
|
||||
def booleanOpt(name: String): Option[Boolean] =
|
||||
sys.props.get(name).flatMap { x =>
|
||||
x.toLowerCase(Locale.ENGLISH) match {
|
||||
case "1" | "always" | "true" => Some(true)
|
||||
case "0" | "never" | "false" => Some(false)
|
||||
case "auto" => None
|
||||
case _ => None
|
||||
}
|
||||
}
|
||||
|
||||
def getOrFalse(name: String): Boolean = booleanOpt(name).getOrElse(false)
|
||||
def getOrTrue(name: String): Boolean = booleanOpt(name).getOrElse(true)
|
||||
|
||||
// System property style:
|
||||
// 1. use sbt. prefix
|
||||
// 2. prefer short nouns
|
||||
// 3. use dot for namespacing, and avoid making dot-separated English phrase
|
||||
// 4. make active/enable properties, instead of "sbt.disable."
|
||||
//
|
||||
// Good: sbt.offline
|
||||
//
|
||||
// Bad:
|
||||
// sbt.disable.interface.classloader.cache
|
||||
// sbt.task.timings.on.shutdown
|
||||
// sbt.skip.version.write -> sbt.genbuildprops=false
|
||||
|
||||
val useSecureResolvers: Boolean = getOrTrue("sbt.repository.secure")
|
||||
|
||||
def modifyVersionRange: Boolean = getOrTrue("sbt.modversionrange")
|
||||
|
||||
lazy val isJavaVersion9Plus: Boolean = javaVersion > 8
|
||||
lazy val javaVersion: Int = {
|
||||
// See Oracle section 1.5.3 at:
|
||||
// https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html
|
||||
val version = sys.props("java.specification.version").split("\\.").toList.map(_.toInt)
|
||||
version match {
|
||||
case 1 :: minor :: _ => minor
|
||||
case major :: _ => major
|
||||
case _ => 0
|
||||
}
|
||||
}
|
||||
|
||||
lazy val useGigahorse: Boolean = getOrTrue("sbt.gigahorse")
|
||||
}
|
||||
|
|
@ -95,8 +95,7 @@ private[sbt] class FakeRepository(resolver: AnyRef, name: String) extends xsbti.
|
|||
}
|
||||
|
||||
private[librarymanagement] abstract class ResolverFunctions {
|
||||
private[sbt] def useSecureResolvers =
|
||||
sys.props.get("sbt.repository.secure") map { _.toLowerCase == "true" } getOrElse true
|
||||
import sbt.internal.librarymanagement.LMSysProp.useSecureResolvers
|
||||
|
||||
val TypesafeRepositoryRoot = typesafeRepositoryRoot(useSecureResolvers)
|
||||
val SbtRepositoryRoot = sbtRepositoryRoot(useSecureResolvers)
|
||||
|
|
|
|||
|
|
@ -242,9 +242,6 @@ object CustomPomParser {
|
|||
transform(dd, _ => newId)
|
||||
case None => dd
|
||||
}
|
||||
private[sbt] lazy val versionRangeFlag = sys.props.get("sbt.modversionrange") map {
|
||||
_.toLowerCase == "true"
|
||||
} getOrElse true
|
||||
|
||||
import collection.JavaConverters._
|
||||
def addExtra(
|
||||
|
|
@ -281,7 +278,7 @@ object CustomPomParser {
|
|||
addExtra(dd, dependencyExtra)
|
||||
}
|
||||
val withVersionRangeMod: Seq[DependencyDescriptor] =
|
||||
if (versionRangeFlag) withExtra map { stripVersionRange } else withExtra
|
||||
if (LMSysProp.modifyVersionRange) withExtra map { stripVersionRange } else withExtra
|
||||
val unique = IvySbt.mergeDuplicateDefinitions(withVersionRangeMod)
|
||||
unique foreach dmd.addDependency
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,8 @@ object ErrorMessageAuthenticator {
|
|||
private var securityWarningLogged = false
|
||||
|
||||
private def originalAuthenticator: Option[Authenticator] = {
|
||||
if (isJavaVersion9Plus) getDefaultAuthenticator else getTheAuthenticator
|
||||
if (LMSysProp.isJavaVersion9Plus) getDefaultAuthenticator
|
||||
else getTheAuthenticator
|
||||
}
|
||||
|
||||
private[this] def getTheAuthenticator: Option[Authenticator] = {
|
||||
|
|
@ -100,15 +101,6 @@ object ErrorMessageAuthenticator {
|
|||
}
|
||||
doInstallIfIvy(originalAuthenticator)
|
||||
}
|
||||
|
||||
private[this] def isJavaVersion9Plus = javaVersion > 8
|
||||
private[this] def javaVersion = {
|
||||
// See Oracle section 1.5.3 at:
|
||||
// https://docs.oracle.com/javase/8/docs/technotes/guides/versioning/spec/versioning2.html
|
||||
val version = sys.props("java.specification.version").split("\\.").map(_.toInt)
|
||||
if (version(0) == 1) version(1) else version(0)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ package ivy
|
|||
import org.apache.ivy.plugins.resolver.DependencyResolver
|
||||
import org.apache.ivy.core.settings.IvySettings
|
||||
import sbt.util.Logger
|
||||
import sbt.internal.librarymanagement.LMSysProp
|
||||
|
||||
/**
|
||||
* Represents configurable options for update task.
|
||||
|
|
@ -109,7 +110,7 @@ object UpdateOptions {
|
|||
interProjectFirst = true,
|
||||
latestSnapshots = true,
|
||||
cachedResolution = false,
|
||||
gigahorse = sys.props.get("sbt.gigahorse") map { _.toLowerCase == "true" } getOrElse true,
|
||||
gigahorse = LMSysProp.useGigahorse,
|
||||
resolverConverter = PartialFunction.empty,
|
||||
moduleResolvers = Map.empty
|
||||
)
|
||||
|
|
|
|||
Loading…
Reference in New Issue