diff options
Diffstat (limited to 'scalalib/src/dependency/DependencyUpdatesImpl.scala')
-rw-r--r-- | scalalib/src/dependency/DependencyUpdatesImpl.scala | 52 |
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") + } +} |