src/main/scala/s3/website/Push.scala in s3_website-2.7.5 vs src/main/scala/s3/website/Push.scala in s3_website-2.7.6

- old
+ new

@@ -81,34 +81,28 @@ logger: Logger, pushOptions: PushOptions ): ExitCode = { logger.info(s"${Deploy.renderVerb} ${site.rootDirectory}/* to ${site.config.s3_bucket}") val s3FilesFuture = resolveS3Files() - val redirectsFuture: Redirects = resolveRedirects(s3FilesFuture) - val redirectReports: Future[Either[ErrorReport, Seq[Future[PushErrorOrSuccess]]]] = - redirectsFuture.map { (errOrRedirects: Either[ErrorReport, Seq[Redirect]]) => - errOrRedirects.right.map(_.filter(_.needsUpload).map(S3 uploadRedirect _)) - } + val redirectsFuture = resolveRedirects(s3FilesFuture) + val redirectReports = redirectsFuture.map { errOrRedirects => + errOrRedirects.right.map(_.filter(_.needsUpload).map(S3 uploadRedirect _)) + } - val uploadFutures: FutureUploads = resolveUploads(s3FilesFuture) - val uploadReports: Future[Either[ErrorReport, Seq[Future[PushErrorOrSuccess]]]] = for { - errorOrUploads: Either[ErrorReport, Seq[Upload]] <- uploadFutures + val uploadReports = for { + errorOrUploads <- resolveUploads(s3FilesFuture) } yield errorOrUploads.right.map(_.map(S3 uploadFile _)) - val deleteReports: Future[Either[ErrorReport, Seq[Future[PushErrorOrSuccess]]]] = for { - errorOrUploads: Either[ErrorReport, Seq[Upload]] <- uploadFutures - } yield { - val errorsOrDeleteReports = redirectsFuture.flatMap { (errOrRedirects: Either[ErrorReport, Seq[Redirect]]) => - errOrRedirects.fold( - err => Future(Left(err)), - redirects => resolveDeletes(s3FilesFuture, redirects) - ) - }.map { (deletes: Either[ErrorReport, Seq[S3Key]]) => - deletes.right.map(keysToDelete => keysToDelete.map(S3 delete _)) - } - Await.result(errorsOrDeleteReports, 1 day) + val deleteReports = redirectsFuture flatMap { errOrRedirects => + errOrRedirects.fold( + err => Future(Left(err)), + redirects => resolveDeletes(s3FilesFuture, redirects) + ) + } map { deletes => + deletes.right.map(keysToDelete => keysToDelete.map(S3 delete _)) } + val allReports = Future.sequence(redirectReports :: uploadReports :: deleteReports :: Nil) map { reports => reports.foldLeft(Nil: PushReports) { (memo, report: Either[ErrorReport, Seq[Future[PushErrorOrSuccess]]]) => report match { case Left(err) => memo :+ Left(err) @@ -118,11 +112,11 @@ } } val finishedPushOps = awaitForResults(Await.result(allReports, 1 day)) val invalidationSucceeded = invalidateCloudFrontItems(finishedPushOps) - afterPushFinished(finishedPushOps, invalidationSucceeded) + report(finishedPushOps, invalidationSucceeded) } def invalidateCloudFrontItems (finishedPushOperations: FinishedPushOperations) (implicit config: Config, cloudFrontSettings: CloudFrontSetting, ec: ExecutionContextExecutor, logger: Logger, pushOptions: PushOptions): @@ -155,10 +149,10 @@ true } type InvalidationSucceeded = Boolean - def afterPushFinished(finishedPushOps: FinishedPushOperations, invalidationSucceeded: Option[Boolean]) + def report(finishedPushOps: FinishedPushOperations, invalidationSucceeded: Option[Boolean]) (implicit config: Config, logger: Logger, pushOptions: PushOptions): ExitCode = { val pushCounts = resolvePushCounts(finishedPushOps) logger.info(s"Summary: ${pushCountsToString(pushCounts)}") val pushOpExitCode = finishedPushOps.foldLeft(0) { (memo, finishedUpload) => memo + finishedUpload.fold(