[sync] sketch out rest of sync process
This commit is contained in:
parent
294966759c
commit
2153f109aa
1 changed files with 28 additions and 9 deletions
|
@ -2,21 +2,21 @@ package net.kemitix.s3thorp
|
||||||
|
|
||||||
import java.nio.file.{DirectoryStream, Files, Path, Paths}
|
import java.nio.file.{DirectoryStream, Files, Path, Paths}
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
|
||||||
import fs2.Stream
|
|
||||||
import cats.effect._
|
import cats.effect._
|
||||||
import Main.putStrLn
|
import fs2.Stream
|
||||||
|
import net.kemitix.s3thorp.Main.putStrLn
|
||||||
|
|
||||||
|
import scala.collection.JavaConverters._
|
||||||
|
import scala.concurrent.Promise
|
||||||
|
|
||||||
object Sync {
|
object Sync {
|
||||||
def apply(c: Config): IO[Unit] = for {
|
def apply(c: Config): IO[Unit] = for {
|
||||||
_ <- putStrLn(s"Bucket: ${c.bucket}, Prefix: ${c.prefix}, Source: ${c.source}")
|
_ <- putStrLn(s"Bucket: ${c.bucket}, Prefix: ${c.prefix}, Source: ${c.source}")
|
||||||
_ <- {
|
_ <- {
|
||||||
|
streamDirectoryPaths(Paths.get(c.source)).flatMap(
|
||||||
// a stream of files in the source directory
|
enrichWithS3MetaData).flatMap(
|
||||||
val pathStream: Stream[IO, Path] = streamDirectoryPaths(Paths.get(c.source))
|
uploadRequiredFilter).flatMap(
|
||||||
|
performUpload).compile.drain
|
||||||
|
|
||||||
IO.unit
|
|
||||||
}
|
}
|
||||||
} yield ()
|
} yield ()
|
||||||
|
|
||||||
|
@ -43,4 +43,23 @@ object Sync {
|
||||||
flatMap(openDirectory).
|
flatMap(openDirectory).
|
||||||
flatMap(recurseIntoSubDirectories)
|
flatMap(recurseIntoSubDirectories)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case class S3MetaData()
|
||||||
|
|
||||||
|
private def enrichWithS3MetaData: Path => Stream[IO, S3MetaData] = path => {
|
||||||
|
// HEAD(bucket, prefix, relative(path))
|
||||||
|
// create blank S3MetaData records (sealed trait?)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def uploadRequiredFilter: S3MetaData => Stream[IO, Path] =
|
||||||
|
s3Metadata => {
|
||||||
|
//md5File(localFile)
|
||||||
|
//filter(localHash => options.force || localHash != metadataHash)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def performUpload: Path => Stream[IO, Promise[Unit]] =
|
||||||
|
path => {
|
||||||
|
// upload
|
||||||
|
IO.unit
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue