mirror of https://github.com/sbt/sbt.git
Merge pull request #84 from dwijnand/expose-more-RichUpdateReport
Expose more in RichUpdateReport
This commit is contained in:
commit
4e3693179b
|
|
@ -3,7 +3,10 @@ package librarymanagement
|
|||
|
||||
import java.io.File
|
||||
|
||||
/** Provides extra methods for filtering the contents of an `UpdateReport` and for obtaining references to a selected subset of the underlying files. */
|
||||
/**
|
||||
* 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) {
|
||||
private[sbt] def recomputeStamps(): UpdateReport =
|
||||
{
|
||||
|
|
@ -15,31 +18,42 @@ final class RichUpdateReport(report: UpdateReport) {
|
|||
import DependencyFilter._
|
||||
|
||||
/** Obtains all successfully retrieved files in all configurations and modules. */
|
||||
private[sbt] def allFiles: Seq[File] = matching(DependencyFilter.allPass)
|
||||
def allFiles: Vector[File] = matching(DependencyFilter.allPass)
|
||||
|
||||
/** Obtains all successfully retrieved files in configurations, modules, and artifacts matching the specified filter. */
|
||||
private[sbt] def matching(f: DependencyFilter): Seq[File] = select0(f).distinct
|
||||
def matching(f: DependencyFilter): Vector[File] = select0(f).distinct
|
||||
|
||||
/** Obtains all successfully retrieved files matching all provided filters. */
|
||||
def select(configuration: ConfigurationFilter, module: ModuleFilter, artifact: ArtifactFilter): Seq[File] =
|
||||
def select(configuration: ConfigurationFilter, module: ModuleFilter, artifact: ArtifactFilter): Vector[File] =
|
||||
matching(DependencyFilter.make(configuration, module, artifact))
|
||||
|
||||
def select(configuration: ConfigurationFilter): Seq[File] = select(configuration, moduleFilter(), artifactFilter())
|
||||
def select(module: ModuleFilter): Seq[File] = select(configurationFilter(), module, artifactFilter())
|
||||
def select(artifact: ArtifactFilter): Seq[File] = select(configurationFilter(), moduleFilter(), artifact)
|
||||
def select(configuration: ConfigurationFilter): Vector[File] = select(configuration, moduleFilter(), artifactFilter())
|
||||
def select(module: ModuleFilter): Vector[File] = select(configurationFilter(), module, artifactFilter())
|
||||
def select(artifact: ArtifactFilter): Vector[File] = select(configurationFilter(), moduleFilter(), artifact)
|
||||
|
||||
private[this] def select0(f: DependencyFilter): Seq[File] =
|
||||
for (cReport <- report.configurations; mReport <- cReport.modules; (artifact, file) <- mReport.artifacts if f(cReport.configuration, mReport.module, artifact)) yield {
|
||||
if (file == null) sys.error("Null file: conf=" + cReport.configuration + ", module=" + mReport.module + ", art: " + artifact)
|
||||
private[this] def select0(f: DependencyFilter): Vector[File] =
|
||||
for {
|
||||
cReport <- report.configurations
|
||||
mReport <- cReport.modules
|
||||
(artifact, file) <- mReport.artifacts
|
||||
if f(cReport.configuration, mReport.module, artifact)
|
||||
} yield {
|
||||
if (file == null) {
|
||||
sys.error(s"Null file: conf=${cReport.configuration}, module=${mReport.module}, art: $artifact")
|
||||
}
|
||||
file
|
||||
}
|
||||
|
||||
/** Constructs a new report that only contains files matching the specified filter.*/
|
||||
private[sbt] def filter(f: DependencyFilter): UpdateReport =
|
||||
def filter(f: DependencyFilter): UpdateReport =
|
||||
moduleReportMap { (configuration, modReport) =>
|
||||
modReport
|
||||
.withArtifacts(modReport.artifacts filter { case (art, file) => f(configuration, modReport.module, art) })
|
||||
.withMissingArtifacts(modReport.missingArtifacts filter { art => f(configuration, modReport.module, art) })
|
||||
.withArtifacts(
|
||||
modReport.artifacts filter { case (art, file) => f(configuration, modReport.module, art) }
|
||||
)
|
||||
.withMissingArtifacts(
|
||||
modReport.missingArtifacts filter { art => f(configuration, modReport.module, art) }
|
||||
)
|
||||
}
|
||||
|
||||
private[sbt] def substitute(f: (String, ModuleID, Vector[(Artifact, File)]) => Vector[(Artifact, File)]): UpdateReport =
|
||||
|
|
@ -50,11 +64,20 @@ final class RichUpdateReport(report: UpdateReport) {
|
|||
.withMissingArtifacts(modReport.missingArtifacts)
|
||||
}
|
||||
|
||||
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 toSeq: Seq[(String, ModuleID, Artifact, File)] = toVector
|
||||
def toVector: Vector[(String, ModuleID, Artifact, File)] =
|
||||
for {
|
||||
confReport <- report.configurations
|
||||
modReport <- confReport.modules
|
||||
(artifact, file) <- modReport.artifacts
|
||||
} yield (confReport.configuration, modReport.module, artifact, file)
|
||||
|
||||
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 allMissing: Vector[(String, ModuleID, Artifact)] =
|
||||
for {
|
||||
confReport <- report.configurations
|
||||
modReport <- confReport.modules
|
||||
artifact <- modReport.missingArtifacts
|
||||
} yield (confReport.configuration, modReport.module, artifact)
|
||||
|
||||
private[sbt] def addMissing(f: ModuleID => Seq[Artifact]): UpdateReport =
|
||||
moduleReportMap { (configuration, modReport) =>
|
||||
|
|
|
|||
Loading…
Reference in New Issue