From cbdbf23127a1737c82e026d4d1e62520901ae54b Mon Sep 17 00:00:00 2001 From: Dale Wijnand Date: Fri, 31 Mar 2017 18:05:32 +0100 Subject: [PATCH] Expose RichUpdateReport & DependencyFilter Fixes #42 --- .../librarymanagement/DependencyFilter.scala | 3 +-- .../librarymanagement/RichUpdateReport.scala | 25 +++++++++++-------- 2 files changed, 15 insertions(+), 13 deletions(-) rename librarymanagement/src/main/scala/sbt/{internal => }/librarymanagement/DependencyFilter.scala (98%) rename librarymanagement/src/main/scala/sbt/{internal => }/librarymanagement/RichUpdateReport.scala (77%) diff --git a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/DependencyFilter.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/DependencyFilter.scala similarity index 98% rename from librarymanagement/src/main/scala/sbt/internal/librarymanagement/DependencyFilter.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/DependencyFilter.scala index 3b0cc28ef..644e43579 100644 --- a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/DependencyFilter.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/DependencyFilter.scala @@ -1,10 +1,9 @@ /* sbt -- Simple Build Tool * Copyright 2011 Mark Harrah */ -package sbt.internal.librarymanagement +package sbt.librarymanagement import sbt.io.{ AllPassFilter, NameFilter } -import sbt.librarymanagement._ trait DependencyFilterExtra { def moduleFilter(organization: NameFilter = AllPassFilter, name: NameFilter = AllPassFilter, revision: NameFilter = AllPassFilter): ModuleFilter = diff --git a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/RichUpdateReport.scala b/librarymanagement/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala similarity index 77% rename from librarymanagement/src/main/scala/sbt/internal/librarymanagement/RichUpdateReport.scala rename to librarymanagement/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala index ad6d3ae01..d9b63c928 100644 --- a/librarymanagement/src/main/scala/sbt/internal/librarymanagement/RichUpdateReport.scala +++ b/librarymanagement/src/main/scala/sbt/librarymanagement/RichUpdateReport.scala @@ -1,13 +1,11 @@ package sbt -package internal package librarymanagement import java.io.File -import sbt.librarymanagement._ /** Provides extra methods for filtering the contents of an `UpdateReport` and for obtaining references to a selected subset of the underlying files. */ final class RichUpdateReport(report: UpdateReport) { - def recomputeStamps(): UpdateReport = + private[sbt] def recomputeStamps(): UpdateReport = { val files = report.cachedDescriptor +: allFiles val stamps = files.map(f => (f, f.lastModified)).toMap @@ -17,13 +15,17 @@ final class RichUpdateReport(report: UpdateReport) { import DependencyFilter._ /** Obtains all successfully retrieved files in all configurations and modules. */ - def allFiles: Seq[File] = matching(DependencyFilter.allPass) + private[sbt] def allFiles: Seq[File] = matching(DependencyFilter.allPass) /** Obtains all successfully retrieved files in configurations, modules, and artifacts matching the specified filter. */ - def matching(f: DependencyFilter): Seq[File] = select0(f).distinct + private[sbt] def matching(f: DependencyFilter): Seq[File] = select0(f).distinct /** Obtains all successfully retrieved files matching all provided filters. An unspecified argument matches all files. */ - def select(configuration: ConfigurationFilter = configurationFilter(), module: ModuleFilter = moduleFilter(), artifact: ArtifactFilter = artifactFilter()): Seq[File] = + def select( + configuration: ConfigurationFilter = configurationFilter(), + module: ModuleFilter = moduleFilter(), + artifact: ArtifactFilter = artifactFilter() + ): Seq[File] = matching(DependencyFilter.make(configuration, module, artifact)) private[this] def select0(f: DependencyFilter): Seq[File] = @@ -39,7 +41,8 @@ final class RichUpdateReport(report: UpdateReport) { .withArtifacts(modReport.artifacts filter { case (art, file) => f(configuration, modReport.module, art) }) .withMissingArtifacts(modReport.missingArtifacts filter { art => f(configuration, modReport.module, art) }) } - def substitute(f: (String, ModuleID, Vector[(Artifact, File)]) => Vector[(Artifact, File)]): UpdateReport = + + private[sbt] def substitute(f: (String, ModuleID, Vector[(Artifact, File)]) => Vector[(Artifact, File)]): UpdateReport = moduleReportMap { (configuration, modReport) => val newArtifacts = f(configuration, modReport.module, modReport.artifacts) modReport @@ -47,19 +50,19 @@ final class RichUpdateReport(report: UpdateReport) { .withMissingArtifacts(modReport.missingArtifacts) } - def toSeq: Seq[(String, ModuleID, Artifact, File)] = + private[sbt] def toSeq: Seq[(String, ModuleID, Artifact, File)] = for (confReport <- report.configurations; modReport <- confReport.modules; (artifact, file) <- modReport.artifacts) yield (confReport.configuration, modReport.module, artifact, file) - def allMissing: Seq[(String, ModuleID, Artifact)] = + private[sbt] def allMissing: Seq[(String, ModuleID, Artifact)] = for (confReport <- report.configurations; modReport <- confReport.modules; artifact <- modReport.missingArtifacts) yield (confReport.configuration, modReport.module, artifact) - def addMissing(f: ModuleID => Seq[Artifact]): UpdateReport = + private[sbt] def addMissing(f: ModuleID => Seq[Artifact]): UpdateReport = moduleReportMap { (configuration, modReport) => modReport .withMissingArtifacts((modReport.missingArtifacts ++ f(modReport.module)).distinct) } - def moduleReportMap(f: (String, ModuleReport) => ModuleReport): UpdateReport = + private[sbt] def moduleReportMap(f: (String, ModuleReport) => ModuleReport): UpdateReport = { val newConfigurations = report.configurations.map { confReport => import confReport._