Safety check

This commit is contained in:
Alexandre Archambault 2016-04-27 01:12:14 +02:00
parent 641af2af91
commit 05c248df82
1 changed files with 35 additions and 26 deletions

View File

@ -65,35 +65,44 @@ final case class Missing(
def next(results: Fetch.MD): ResolutionProcess = {
val errors = results
.collect{case (modVer, -\/(errs)) => modVer -> errs }
val successes = results
.collect{case (modVer, \/-(repoProj)) => modVer -> repoProj }
val depMgmtMissing0 = successes
.map{case (_, (_, proj)) => current.dependencyManagementMissing(proj) }
.fold(Set.empty)(_ ++ _)
val depMgmtMissing = depMgmtMissing0 -- results.map(_._1)
def cont0(res: Resolution) = {
val res0 =
successes.foldLeft(res){case (acc, (modVer, (source, proj))) =>
acc.copyWithCache(projectCache = acc.projectCache + (
modVer -> (source, acc.withDependencyManagement(proj))
))
}
Continue(res0, cont)
val errors = results.collect {
case (modVer, -\/(errs)) =>
modVer -> errs
}
val successes = results.collect {
case (modVer, \/-(repoProj)) =>
modVer -> repoProj
}
val current0 = current
.copyWithCache(errorCache = current.errorCache ++ errors)
def cont0(res: Resolution): ResolutionProcess = {
if (depMgmtMissing.isEmpty)
cont0(current0)
else
Missing(depMgmtMissing.toSeq, current0, cont0)
val depMgmtMissing0 = successes.map {
case (_, (_, proj)) =>
res.dependencyManagementMissing(proj)
}.fold(Set.empty)(_ ++ _)
val depMgmtMissing = depMgmtMissing0 -- results.map(_._1)
if (depMgmtMissing.isEmpty) {
val res0 = successes.foldLeft(res) {
case (acc, (modVer, (source, proj))) =>
acc.copyWithCache(
projectCache = acc.projectCache + (
modVer -> (source, acc.withDependencyManagement(proj))
)
)
}
Continue(res0, cont)
} else
Missing(depMgmtMissing.toSeq, res, cont0)
}
val current0 = current.copyWithCache(
errorCache = current.errorCache ++ errors
)
cont0(current0)
}
}