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