Paul Campbell
97efed76b4
* [aws-lib] fold S3ClientUploader trait into it's only implementation This trait was only implemented by S3ClientTransferManager. * [core] SyncLogging: more robust matching No longer cares about parameters to case classes, just their types. * [cli] Logger uses IO for log methods * [aws-lib] remove 'transfer-manager'prefix and only show tryCount > 1 * [sbt,cli] remove log4j and scala-logging dependencies * [domain] move QuoteStripper to Domain Use it directly in MD5Hash to strip quotes from any input. * [core] SyncLogging call info in proper context If the IO.unit returned by the info calls isn't part of the chain that is returned from the function, then the delayed IO action is never called. * [aws-lib] Display size in bytes of file being uploaded * [core] call info in correct context * [cli] call info in correct context * [aws-lib] raise summary fetch message to info 1 * [cli] include correct level in info messages * [aws-lib] S3ClientLogging adjust logging levels * [aws-lib] display file sizes in english * [aws-lib] ObjectLister use IO.bracket properly * [aws-lib] Copier use IO.bracket properly * [aws-lib] Deleter refactor * [aws-lib] TransferManagerLogging remove unused methods * [aws-lib] TransferManager refactor * [aws-lib] TransferManager refactor * [aws-lib] TransferManager displays log messages Use the UploadProgressListener that was being ignored, and use unsafeRunSync to execute the suspended effect within the IO[Unit]. Using unsafeRunSync is required to render the effects as the listener returns Unit, meaning the suspended effects would be discarded. * [domain] Extract SizeTranslation into module * [aws-api] report bytes transferred in progress * [core] fix calls to info info now returns an IO already, so don't need to wrap it in one. * [aws-lib] remove unused class * [aws-lib] UploadProgress displays progress bar while uploading * [aws-api] UploadProgressLogging optimise imports * [aws-api] UploadProgressLogging rename variables * [domain] add Terminal object * [aws-api] UploadProgressLogging use console width and two lines - Improved clearing of lines after progress bar - Use console width for progress bar size * [aws-lib] S3ClientLogging optimise imports * [aws-lib] TransferManager clear line before logging * [aws-lib] rename class as TransferManager * [aws-lib] rename TransferManger as Uploader to not clash We are using an AWS SDK class with the same name.
61 lines
1.7 KiB
Scala
61 lines
1.7 KiB
Scala
val applicationSettings = Seq(
|
|
name := "s3thorp",
|
|
version := "0.1",
|
|
scalaVersion := "2.12.8"
|
|
)
|
|
val testDependencies = Seq(
|
|
libraryDependencies ++= Seq(
|
|
"org.scalatest" %% "scalatest" % "3.0.7" % Test,
|
|
"org.scalamock" %% "scalamock" % "4.2.0" % Test
|
|
)
|
|
)
|
|
val commandLineParsing = Seq(
|
|
libraryDependencies ++= Seq(
|
|
"com.github.scopt" %% "scopt" % "4.0.0-RC2"
|
|
)
|
|
)
|
|
val awsSdkDependencies = Seq(
|
|
libraryDependencies ++= Seq(
|
|
"com.amazonaws" % "aws-java-sdk-s3" % "1.11.568",
|
|
// override the versions AWS uses, which is they do to preserve Java 6 compatibility
|
|
"com.fasterxml.jackson.core" % "jackson-databind" % "2.9.9",
|
|
"com.fasterxml.jackson.dataformat" % "jackson-dataformat-cbor" % "2.9.9"
|
|
)
|
|
)
|
|
val catsEffectsSettings = Seq(
|
|
libraryDependencies ++= Seq(
|
|
"org.typelevel" %% "cats-effect" % "1.3.1"
|
|
),
|
|
// recommended for cats-effects
|
|
scalacOptions ++= Seq(
|
|
"-feature",
|
|
"-deprecation",
|
|
"-unchecked",
|
|
"-language:postfixOps",
|
|
"-language:higherKinds",
|
|
"-Ypartial-unification")
|
|
)
|
|
|
|
// cli -> aws-lib -> core -> aws-api -> domain
|
|
|
|
lazy val cli = (project in file("cli"))
|
|
.settings(applicationSettings)
|
|
.aggregate(`aws-lib`, core, `aws-api`, domain)
|
|
.settings(commandLineParsing)
|
|
.dependsOn(`aws-lib`)
|
|
|
|
lazy val `aws-lib` = (project in file("aws-lib"))
|
|
.settings(awsSdkDependencies)
|
|
.settings(testDependencies)
|
|
.dependsOn(core)
|
|
|
|
lazy val core = (project in file("core"))
|
|
.settings(testDependencies)
|
|
.dependsOn(`aws-api`)
|
|
|
|
lazy val `aws-api` = (project in file("aws-api"))
|
|
.settings(catsEffectsSettings)
|
|
.dependsOn(domain)
|
|
|
|
lazy val domain = (project in file("domain"))
|
|
.settings(testDependencies)
|