summaryrefslogtreecommitdiff
path: root/scalalib/src/dependency/DependencyUpdatesImpl.scala
diff options
context:
space:
mode:
Diffstat (limited to 'scalalib/src/dependency/DependencyUpdatesImpl.scala')
-rw-r--r--scalalib/src/dependency/DependencyUpdatesImpl.scala52
1 files changed, 52 insertions, 0 deletions
diff --git a/scalalib/src/dependency/DependencyUpdatesImpl.scala b/scalalib/src/dependency/DependencyUpdatesImpl.scala
new file mode 100644
index 00000000..3bb94202
--- /dev/null
+++ b/scalalib/src/dependency/DependencyUpdatesImpl.scala
@@ -0,0 +1,52 @@
+package mill.scalalib.dependency
+
+import mill.define._
+import mill.scalalib.dependency.updates.{
+ DependencyUpdates,
+ ModuleDependenciesUpdates,
+ UpdatesFinder
+}
+import mill.scalalib.dependency.versions.VersionsFinder
+import mill.api.Ctx.{Home, Log}
+
+object DependencyUpdatesImpl {
+
+ def apply(ctx: Log with Home,
+ rootModule: BaseModule,
+ discover: Discover[_],
+ allowPreRelease: Boolean): Unit = {
+
+ // 1. Find all available versions for each dependency
+ val allDependencyVersions = VersionsFinder.findVersions(ctx, rootModule)
+
+ // 2. Extract updated versions from all available versions
+ val allUpdates = allDependencyVersions.map { dependencyVersions =>
+ UpdatesFinder.findUpdates(dependencyVersions, allowPreRelease)
+ }
+
+ // 3. Print the results
+ showAllUpdates(allUpdates)
+ }
+
+ private def showAllUpdates(updates: Seq[ModuleDependenciesUpdates]): Unit =
+ updates.foreach { dependencyUpdates =>
+ val module = dependencyUpdates.module.toString
+ val actualUpdates =
+ dependencyUpdates.dependencies.filter(_.updates.nonEmpty)
+ if (actualUpdates.isEmpty) {
+ println(s"No dependency updates found for $module")
+ } else {
+ println(s"Found ${actualUpdates.length} dependency update for $module")
+ showUpdates(actualUpdates)
+ }
+ }
+
+ private def showUpdates(updates: Seq[DependencyUpdates]): Unit =
+ updates.foreach { dependencyUpdate =>
+ val module = s"${dependencyUpdate.dependency.module}"
+ val allVersions =
+ (dependencyUpdate.currentVersion +: dependencyUpdate.updates.toList)
+ .mkString(" -> ")
+ println(s" $module : $allVersions")
+ }
+}