Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .git-blame-ignore-revs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Reformat with scalafmt 3.10.1
407f5e474f1fadceebc3f85bf1cebcb9fef1a88f
bb6f2b9b4ec9726f993814b11529107bfba37232
73 changes: 73 additions & 0 deletions .scalafmt.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Version https://scalameta.org/scalafmt/docs/configuration.html#version
version = 3.10.1
# Dialect https://scalameta.org/scalafmt/docs/configuration.html#scala-dialects
runner.dialect = scala213source3

# Top-level preset https://scalameta.org/scalafmt/docs/configuration.html#top-level-presets
preset = default

# Common https://scalameta.org/scalafmt/docs/configuration.html#most-popular
maxColumn = 120
assumeStandardLibraryStripMargin = true

# Alignment https://scalameta.org/scalafmt/docs/configuration.html#alignment
align {
preset = more
allowOverflow = true
}

# Newlines https://scalameta.org/scalafmt/docs/configuration.html#newlines
newlines {
alwaysBeforeMultilineDef = false
implicitParamListModifierPrefer = before
beforeCurlyLambdaParams = multilineWithCaseOnly
inInterpolation = "avoid"
}

# Comment processing https://scalameta.org/scalafmt/docs/configuration.html#comment-processing
docstrings {
style = Asterisk
wrap = no
}

# Spaces https://scalameta.org/scalafmt/docs/configuration.html#spaces
spaces {
inImportCurlyBraces = true # more idiomatic to include whitepsace in import x.{ yyy => zzz }
}

# Project https://scalameta.org/scalafmt/docs/configuration.html#project
project {
git = true
}

# Rewrite Rules https://scalameta.org/scalafmt/docs/configuration.html#rewrite-rules
rewrite {
rules = [
AvoidInfix, # https://scalameta.org/scalafmt/docs/configuration.html#avoidinfix
RedundantParens, # https://scalameta.org/scalafmt/docs/configuration.html#redundantparens
SortModifiers, # https://scalameta.org/scalafmt/docs/configuration.html#sortmodifiers
PreferCurlyFors, # https://scalameta.org/scalafmt/docs/configuration.html#prefercurlyfors
Imports, # https://scalameta.org/scalafmt/docs/configuration.html#imports
]
sortModifiers.order = ["private", "protected", "final", "sealed", "abstract", "implicit", "override", "lazy"]
imports {
expand = true
sort = original
groups = [["java(x)?\\..*"], ["scala\\..*"], ["sbt\\..*"]]
}
trailingCommas.style = keep # https://scalameta.org/scalafmt/docs/configuration.html#trailing-commas
avoidInfix.excludePostfix = true # https://scalameta.org/scalafmt/docs/configuration.html#avoidinfix
}

fileOverride {
"glob:**/src/main/scala-3/**" {
runner.dialect = scala3
}
}

rewrite.scala3.convertToNewSyntax = true
runner.dialectOverride {
allowSignificantIndentation = false
allowAsForImportRename = false
allowStarWildcardImport = false
}
125 changes: 78 additions & 47 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,36 @@ import com.github.sbt.osgi.SbtOsgi
import com.github.sbt.osgi.SbtOsgi.autoImport._
import com.typesafe.tools.mima.core._

ThisBuild / scalaVersion := Version.scala212
ThisBuild / scalaVersion := Version.scala212
ThisBuild / crossScalaVersions := Seq(Version.scala213, Version.scala212, Version.scala3)

val disablePublishingSettings = Seq(
publish / skip := true,
publish / skip := true,
mimaReportBinaryIssues := false
)
)

lazy val sslConfigCore = project.in(file("ssl-config-core"))
lazy val sslConfigCore = project
.in(file("ssl-config-core"))
.settings(AutomaticModuleName.settings("ssl.config.core"))
.settings(osgiSettings: _*)
.settings(
javacOptions ++= Seq("-source", "1.8", "-target", "1.8"),
name := "ssl-config-core",
name := "ssl-config-core",
mimaReportSignatureProblems := true,
mimaPreviousArtifacts := Set("com.typesafe" %% "ssl-config-core" % "0.6.1"),
mimaPreviousArtifacts := Set("com.typesafe" %% "ssl-config-core" % "0.6.1"),
mimaBinaryIssueFilters ++= Seq(
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigParser.parseSSLParameters"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.disabledKeyAlgorithms"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.hostnameVerifierClass"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.sslParametersConfig"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.withHostnameVerifierClass"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.withSslParametersConfig"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigParser.parseSSLParameters"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.disabledKeyAlgorithms"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.hostnameVerifierClass"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.sslParametersConfig"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.withHostnameVerifierClass"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.withSslParametersConfig"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.certpath"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.defaultctx"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.handshake"),
Expand All @@ -35,7 +42,8 @@ lazy val sslConfigCore = project.in(file("ssl-config-core"))
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.session"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.sessioncache"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withCertPath"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withDefaultContext"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withDefaultContext"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withHandshake"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withKeygen"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withOcsp"),
Expand All @@ -44,10 +52,14 @@ lazy val sslConfigCore = project.in(file("ssl-config-core"))
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withSession"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.withSessioncache"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.allowWeakCiphers"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.allowWeakProtocols"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.disableHostnameVerification"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.allowWeakProtocols"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.disableHostnameVerification"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.disableSNI"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.withDisableHostnameVerification"),
ProblemFilters.exclude[DirectMissingMethodProblem](
"com.typesafe.sslconfig.ssl.SSLLooseConfig.withDisableHostnameVerification"
),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.withDisableSNI"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.AlgorithmChecker"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.ClientAuth"),
Expand All @@ -59,10 +71,16 @@ lazy val sslConfigCore = project.in(file("ssl-config-core"))
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.ClassFinder"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.DebugConfiguration"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.FixCertpathDebugLogging"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.FixCertpathDebugLogging$MonkeyPatchSunSecurityUtilDebugAction"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.FixCertpathDebugLogging$SunSecurityUtilDebugLogger"),
ProblemFilters.exclude[MissingClassProblem](
"com.typesafe.sslconfig.ssl.debug.FixCertpathDebugLogging$MonkeyPatchSunSecurityUtilDebugAction"
),
ProblemFilters.exclude[MissingClassProblem](
"com.typesafe.sslconfig.ssl.debug.FixCertpathDebugLogging$SunSecurityUtilDebugLogger"
),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.FixInternalDebugLogging"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.FixInternalDebugLogging$MonkeyPatchInternalSslDebugAction"),
ProblemFilters.exclude[MissingClassProblem](
"com.typesafe.sslconfig.ssl.debug.FixInternalDebugLogging$MonkeyPatchInternalSslDebugAction"
),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.debug.FixLoggingAction"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.DefaultHostnameVerifier"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.DisabledComplainingHostnameVerifier"),
Expand All @@ -76,9 +94,12 @@ lazy val sslConfigCore = project.in(file("ssl-config-core"))
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.SSLDebugRecordOptions$"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.SSLParametersConfig"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.SSLParametersConfig$"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$12"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$13"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$14"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$12"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$13"),
ProblemFilters
.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$14"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.<init>$default$10"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.<init>$default$11"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.<init>$default$12"),
Expand All @@ -92,44 +113,54 @@ lazy val sslConfigCore = project.in(file("ssl-config-core"))
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.<init>$default$5"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.<init>$default$6"),
ProblemFilters.exclude[DirectMissingMethodProblem]("com.typesafe.sslconfig.ssl.SSLLooseConfig.<init>$default$7"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$10"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$11"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$7"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$8"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$9"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.<init>$default$4"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$10"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$11"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$7"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$8"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLConfigSettings.<init>$default$9"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("com.typesafe.sslconfig.ssl.SSLDebugConfig.<init>$default$4"),
ProblemFilters.exclude[MissingClassProblem]("com.typesafe.sslconfig.ssl.AlgorithmConstraint"),
),
libraryDependencies ++= Dependencies.sslConfigCore,
libraryDependencies ++= Dependencies.testDependencies,
OsgiKeys.bundleSymbolicName := s"${organization.value}.sslconfig",
OsgiKeys.exportPackage := Seq(s"com.typesafe.sslconfig.*;version=${version.value}"),
OsgiKeys.importPackage := Seq("!sun.misc", "!sun.security.*", configImport(), "*"),
OsgiKeys.requireCapability := """osgi.ee;filter:="(&(osgi.ee=JavaSE)(version>=1.8))"""",
).enablePlugins(SbtOsgi)
OsgiKeys.exportPackage := Seq(s"com.typesafe.sslconfig.*;version=${version.value}"),
OsgiKeys.importPackage := Seq("!sun.misc", "!sun.security.*", configImport(), "*"),
OsgiKeys.requireCapability := """osgi.ee;filter:="(&(osgi.ee=JavaSE)(version>=1.8))"""",
)
.enablePlugins(SbtOsgi)

val documentation = project.enablePlugins(ParadoxPlugin, ParadoxSitePlugin).settings(
name := "SSL Config",
Paradox / siteSubdirName := "",
paradoxTheme := Some(builtinParadoxTheme("generic")),
disablePublishingSettings,
)
val documentation = project
.enablePlugins(ParadoxPlugin, ParadoxSitePlugin)
.settings(
name := "SSL Config",
Paradox / siteSubdirName := "",
paradoxTheme := Some(builtinParadoxTheme("generic")),
disablePublishingSettings,
)

lazy val root = project.in(file("."))
lazy val root = project
.in(file("."))
.aggregate(
sslConfigCore,
documentation
)
.settings(disablePublishingSettings: _*)

def configImport(packageName: String = "com.typesafe.config.*") = versionedImport(packageName, "1.4.2", "1.5.0")
def configImport(packageName: String = "com.typesafe.config.*") = versionedImport(packageName, "1.4.2", "1.5.0")
def versionedImport(packageName: String, lower: String, upper: String) = s"""$packageName;version="[$lower,$upper)""""

addCommandAlias("validateCode", "headerCheckAll")
addCommandAlias("validateCode", "headerCheckAll ; scalafmtSbtCheck ; scalafmtCheckAll")

ThisBuild / githubWorkflowBuild := Seq(
WorkflowStep.Sbt(List("validateCode", "test", "doc", "mimaReportBinaryIssues")),
WorkflowStep.Run(List("./scripts/validate-docs.sh"), cond=Some("matrix.java != 'temurin@8'")),
WorkflowStep.Run(List("./scripts/validate-docs.sh"), cond = Some("matrix.java != 'temurin@8'")),
)

ThisBuild / githubWorkflowTargetTags ++= Seq("v*")
Expand All @@ -143,8 +174,8 @@ ThisBuild / githubWorkflowPublish := Seq(
commands = List("ci-release"),
name = Some("Publish project"),
env = Map(
"PGP_PASSPHRASE" -> "${{ secrets.PGP_PASSPHRASE }}",
"PGP_SECRET" -> "${{ secrets.PGP_SECRET }}",
"PGP_PASSPHRASE" -> "${{ secrets.PGP_PASSPHRASE }}",
"PGP_SECRET" -> "${{ secrets.PGP_SECRET }}",
"SONATYPE_PASSWORD" -> "${{ secrets.SONATYPE_PASSWORD }}",
"SONATYPE_USERNAME" -> "${{ secrets.SONATYPE_USERNAME }}",
)
Expand All @@ -156,9 +187,9 @@ ThisBuild / githubWorkflowOSes := Seq("ubuntu-latest", "macos-latest", "windows-
ThisBuild / githubWorkflowJavaVersions := Seq(
JavaSpec.temurin("8"),
JavaSpec.temurin("11"),
//JavaSpec.temurin("17"), // can't test currently because until we drop usage of sun.security.x509.*
//JavaSpec.temurin("21"),
//JavaSpec.temurin("25"),
// JavaSpec.temurin("17"), // can't test currently because until we drop usage of sun.security.x509.*
// JavaSpec.temurin("21"),
// JavaSpec.temurin("25"),
)

ThisBuild / githubWorkflowBuildMatrixExclusions += MatrixExclude(Map("java" -> "temurin@8", "os" -> "macos-latest"))
19 changes: 10 additions & 9 deletions project/AutomaticModuleName.scala
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,19 @@
* Copyright (C) 2015 - 2021 Lightbend Inc. <https://www.lightbend.com>
*/

import sbt.{Def, _}
import sbt._
import sbt.Def
import sbt.Keys._

/**
* Helper to set Automatic-Module-Name in projects.
*
* !! DO NOT BE TEMPTED INTO AUTOMATICALLY DERIVING THE NAMES FROM PROJECT NAMES !!
*
* The names carry a lot of implications and DO NOT have to always align 1:1 with the group ids or package names,
* though there should be of course a strong relationship between them.
*/
object AutomaticModuleName {
* Helper to set Automatic-Module-Name in projects.
*
* !! DO NOT BE TEMPTED INTO AUTOMATICALLY DERIVING THE NAMES FROM PROJECT NAMES !!
*
* The names carry a lot of implications and DO NOT have to always align 1:1 with the group ids or package names,
* though there should be of course a strong relationship between them.
*/
object AutomaticModuleName {
private val AutomaticModuleName = "Automatic-Module-Name"

def settings(name: String): Seq[Def.Setting[Task[Seq[PackageOption]]]] = Seq(
Expand Down
Loading