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
8 changes: 7 additions & 1 deletion src/main/paradox/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,10 @@ The different levels of checking available are:

* **Description:** Excludes the specified dependencies from the lockfile.
* **Accepts:** `sbt.librarymanagement.ModuleFilter`
* **Default:** `DependencyFilter.fnToModuleFilter(_ => false)` (no exclusions)
* **Default:** `DependencyFilter.fnToModuleFilter(_ => false)` (no exclusions)

### dependencyLockConfigurationFilter

* **Description:** Excludes the specified configurations from the lockfile.
* **Accepts:** `sbt.librarymanagement.ConfigurationFilter`
* **Default:** `DependencyFilter.fnToConfigurationFilter(_ => false)` (no exclusions)
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ package software.purpledragon.sbt.lock
import sbt._
import sbt.Keys._
import sbt.internal.util.ManagedLogger
import sbt.librarymanagement.{DependencyFilter, ModuleFilter}
import sbt.librarymanagement.{DependencyFilter, ModuleFilter, ConfigurationFilter}
import software.purpledragon.sbt.lock.DependencyLockUpdateMode._
import software.purpledragon.sbt.lock.model.{DependencyLockFile, LockFileMatches}
import software.purpledragon.sbt.lock.util.MessageUtil
Expand All @@ -32,6 +32,7 @@ object DependencyLockPlugin extends AutoPlugin {
val dependencyLockWrite = taskKey[File]("write dependencies to lockfile")
val dependencyLockRead = taskKey[Option[DependencyLockFile]]("read dependencies from lockfile")
val dependencyLockModuleFilter = settingKey[ModuleFilter]("exclusion filter for dependencies")
val dependencyLockConfigurationFilter = settingKey[ConfigurationFilter]("exclusion filter for configurations")

val dependencyLockCheck = taskKey[Unit]("check if dependency lock is up to date")

Expand All @@ -51,8 +52,10 @@ object DependencyLockPlugin extends AutoPlugin {
val dest = dependencyLockFile.value
val updateReport = update.value
val exclusionFilter = dependencyLockModuleFilter.value
val configFilter = dependencyLockConfigurationFilter.value
val configurations = thisProject.value.configurations.filterNot(c => configFilter(c)).map(_.toConfigRef)

val lockFile = DependencyUtils.resolve(updateReport, exclusionFilter, thisProject.value.configurations.map(_.toConfigRef))
val lockFile = DependencyUtils.resolve(updateReport, exclusionFilter, configurations)

val updateStatus = DependencyLockIO
.readLockFile(dest)
Expand All @@ -72,9 +75,11 @@ object DependencyLockPlugin extends AutoPlugin {
val logger: ManagedLogger = streams.value.log
val updateReport: UpdateReport = update.value
val exclusionFilter = dependencyLockModuleFilter.value
val configFilter = dependencyLockConfigurationFilter.value
val configurations = thisProject.value.configurations.filterNot(c => configFilter(c)).map(_.toConfigRef)

val currentFile = dependencyLockRead.value.getOrElse(sys.error(MessageUtil.formatMessage("lock.status.missing")))
val updatedFile = DependencyUtils.resolve(updateReport, exclusionFilter, thisProject.value.configurations.map(_.toConfigRef))
val updatedFile = DependencyUtils.resolve(updateReport, exclusionFilter, configurations)

val changes = currentFile.findChanges(updatedFile)

Expand All @@ -93,13 +98,15 @@ object DependencyLockPlugin extends AutoPlugin {
val skipCheck = state.value.currentCommand.map(_.commandLine).exists(PluginTasks.contains)
val checkMode = dependencyLockAutoCheck.value
val exclusionFilter = dependencyLockModuleFilter.value
val configFilter = dependencyLockConfigurationFilter.value
val configurations = thisProject.value.configurations.filterNot(c => configFilter(c)).map(_.toConfigRef)

if (checkMode != DependencyLockUpdateMode.CheckDisabled && !skipCheck) {
logger.debug("Automatically checking lockfile")

dependencyLockRead.value match {
case Some(currentFile) =>
val updatedFile = DependencyUtils.resolve(report, exclusionFilter, thisProject.value.configurations.map(_.toConfigRef))
val updatedFile = DependencyUtils.resolve(report, exclusionFilter, configurations)

val changes = currentFile.findChanges(updatedFile)

Expand Down Expand Up @@ -136,6 +143,7 @@ object DependencyLockPlugin extends AutoPlugin {

override def globalSettings: Seq[Def.Setting[_]] = Seq(
dependencyLockAutoCheck := DependencyLockUpdateMode.WarnOnError,
dependencyLockModuleFilter := DependencyFilter.fnToModuleFilter(_ => false)
dependencyLockModuleFilter := DependencyFilter.fnToModuleFilter(_ => false),
dependencyLockConfigurationFilter := DependencyFilter.fnToConfigurationFilter(_ => false)
)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
scalaVersion := "2.12.10"

libraryDependencies ++= Seq(
"org.apache.commons" % "commons-lang3" % "3.9",
"org.scalatest" %% "scalatest" % "3.0.8" % Test,
)

// One ineffective filter and one for the Test scope.
dependencyLockConfigurationFilter := configurationFilter(name = "fake") | configurationFilter(name = "test")
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"lockVersion" : 1,
"timestamp" : "2022-08-11T18:02:07.891395Z",
"configurations" : [
"compile",
"optional",
"provided",
"runtime"
],
"dependencies" : [
{
"org" : "org.apache.commons",
"name" : "commons-lang3",
"version" : "3.9",
"artifacts" : [
{
"name" : "commons-lang3.jar",
"hash" : "sha1:0122c7cee69b53ed4a7681c03d4ee4c0e2765da5"
}
],
"configurations" : [
"compile",
"runtime"
]
},
{
"org" : "org.scala-lang",
"name" : "scala-library",
"version" : "2.12.10",
"artifacts" : [
{
"name" : "scala-library.jar",
"hash" : "sha1:3509860bc2e5b3da001ed45aca94ffbe5694dbda"
}
],
"configurations" : [
"compile",
"runtime"
]
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
sbt.version=1.7.1
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
val pluginVersion = System.getProperty("plugin.version")
if (pluginVersion == null)
throw new RuntimeException("""|The system property 'plugin.version' is not defined.
|Specify this property using the scriptedLaunchOpts -D.""".stripMargin)
else addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % pluginVersion)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
> dependencyLockCheck
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
scalaVersion := "2.12.10"

libraryDependencies ++= Seq(
"org.apache.commons" % "commons-lang3" % "3.9",
"org.scalatest" %% "scalatest" % "3.0.8" % Test,
)

// One ineffective filter and one for the Test scope.
dependencyLockConfigurationFilter := configurationFilter(name = "fake") | configurationFilter(name = "test")
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"lockVersion" : 1,
"timestamp" : "2022-08-11T18:02:07.891395Z",
"configurations" : [
"compile",
"optional",
"provided",
"runtime"
],
"dependencies" : [
{
"org" : "org.apache.commons",
"name" : "commons-lang3",
"version" : "3.9",
"artifacts" : [
{
"name" : "commons-lang3.jar",
"hash" : "sha1:0122c7cee69b53ed4a7681c03d4ee4c0e2765da5"
}
],
"configurations" : [
"compile",
"runtime"
]
},
{
"org" : "org.scala-lang",
"name" : "scala-library",
"version" : "2.12.10",
"artifacts" : [
{
"name" : "scala-library.jar",
"hash" : "sha1:3509860bc2e5b3da001ed45aca94ffbe5694dbda"
}
],
"configurations" : [
"compile",
"runtime"
]
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{
"lockVersion" : 1,
"timestamp" : "2022-08-11T18:02:07.891395Z",
"configurations" : [
"compile",
"optional",
"provided",
"runtime"
],
"dependencies" : [
{
"org" : "org.apache.commons",
"name" : "commons-lang3",
"version" : "3.9",
"artifacts" : [
{
"name" : "commons-lang3.jar",
"hash" : "sha1:0122c7cee69b53ed4a7681c03d4ee4c0e2765da5"
}
],
"configurations" : [
"compile",
"runtime"
]
},
{
"org" : "org.scala-lang",
"name" : "scala-library",
"version" : "2.12.10",
"artifacts" : [
{
"name" : "scala-library.jar",
"hash" : "sha1:3509860bc2e5b3da001ed45aca94ffbe5694dbda"
}
],
"configurations" : [
"compile",
"runtime"
]
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
val pluginVersion = System.getProperty("plugin.version")
if (pluginVersion == null)
throw new RuntimeException("""|The system property 'plugin.version' is not defined.
|Specify this property using the scriptedLaunchOpts -D.""".stripMargin)
else addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % pluginVersion)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
> dependencyLockWrite
$ must-mirror build.sbt.lock build.sbt.lock.orig
> dependencyLockCheck