Paul Campbell
c5d7d4933c
* [sbt] Rename storage-api as storage * [storage] remove dependency upon console * [storage] remove dependency upon config * [console] remove dependency upon config * [sbt] Add app module Make cli module actually cli, by moving CliArgs parser into it and Main and Program into app. * add app that depends on cli and thorp-lib * move non-cli specific to app * make cli depend on config * make cli not depend on thorp-lib * [sbt] make module dependencies more explicit * make app depend on storage-aws * make cli depend on filesystem's tests * make thorp-lib depend on core * make thorp-lib not depend on storage-aws * make storage-aws not depend on core's tests * make storage-aws depend on storage * make storage-aws depend on filesystem and its tests * make storage-aws depend on console * make storage-aws depend on core * make core depend on filesystem and its tests * make filesystem depend on domain and its tests * [sbt] merge thorp-lib with core as lib * [sbt] add zio streams * [lib] Add EIPTest * [sbt] Allow NonUnitStatements * [lib] EIPTest Message Channel rewritten using ZIO Stream * [sbt] Add eip-zip 0.2.0 as dependency in lib * Remove file counter and total upload size progress Simplifying UnversionedMirrorArchive so we can create it before we know what actions are needed. * Fetch Remote Data before preparing any plans * [domain] RemoteObjects only holds a single RemoteKey per Hash Having multiple keys for a hash is redundant. They are only used to create copy commands, and only one source remote key is needed for that. * [lib] Add a State trait * [lib] Add FileScanner * Add FileSystem.length(File) * Add Clock to the Environment * [domain] Sources update format * [domain] Asking for a path that isn't in any Sources is fatal There should never be any situation where are path not within a Source is supplied. If there is, then something is badly wrong. * [lib] Add test on use of zio.Ref * [uishell] Add stub module * [sbt] Upgrade eip-zio from 0.2.0 to 0.3.0 * [uishell] Add UIEvent stub * [uishell] Add UIShell stub * [sbt] Add eip-zio dependencies to app module * [app] Wrap existing execution in simple point to point channel * [uishell] Add UIEvent.ShowValidConfig * [app] Remember to end the channel to allow prog to exit * [app] purify environment for showValidConfig * [app] Create type alias for pure effect free channel ref * [app] Program refactoring * [uishell] Add UIEvent.RemoteDataFetched * [domain] Move Counters from lib * [uishell] Add UIEvent.ShowSummary * [lib] Add stub for PushLocalChanges * [lib] Clean up FileScanner Environment types * [lib] End channel after scanning files * [lib] PushLocalChanges uses FileScanner Scans files and sends them to a dummy receiver. * [uishell] Add UIEvent.FileFound * [lib] rename PushLocalChanges.apply as LocalFielSystem.scanCopyUpload * [lib] FileScanner return LocalFile * [domain] add length to LocalFile * [domain] Add interogation queries to RemoteObjects * [domain] Remove RemoteObject.keyForHashes * [domain] RemoteObjects.remoteHasHash return the key and the hash * [lib] LocalFileSystem.scanCopyUpload create Actions * [domain] Move Action from lib * [uishell] Log actions * [lib] FileScanner respects Filters * [lib] Create remoteKey for files correctly * [lib] LocalFileSystem refactoring * [lib] ThorpArchive.update doesn't need Console * [uishell] Don't log choosen Action * [uishell] Add UIEvent.ActionFinished * [lib] LocalFileSystem refactoring * [lib] Switch to using LocalFileSystem to do Copy/Upload Todo or Broken: - [ ] Delete actions don't happen - [ ] Counters in summary are all zeros * [lib] LocalFileStream display summary counters correctly * [app] Restore ability to delete remote files * [lib] LocalFileSystem deletes remote when local does NOT exist * [filesystem] move hasLocalFile to FileSystem * [filesystem] fix detection of local files from a RemoteKey The configured Prefix wasn't being taken into account, meaning that the expected local file for a RemoteKey was wrong. * [filesystem] fix broken FileSystem test * [domain] fix RemoteKey test * [sbt] Upgrade eip-zio to 0.3.1 for zio-stream 1.0.0-RC12-1 compatibility * [app] Program refactorting * [lib] Remove unused class * [lib] Remove test * [uishell] Refactor large method
167 lines
4.8 KiB
Scala
167 lines
4.8 KiB
Scala
import sbtassembly.AssemblyPlugin.defaultShellScript
|
|
|
|
inThisBuild(List(
|
|
organization := "net.kemitix.thorp",
|
|
homepage := Some(url("https://github.com/kemitix/thorp")),
|
|
licenses := List("mit" -> url("https://opensource.org/licenses/MIT")),
|
|
developers := List(
|
|
Developer(
|
|
"kemitix",
|
|
"Paul Campbell",
|
|
"pcampbell@kemitix.net",
|
|
url("https://github.kemitix.net")
|
|
)
|
|
)
|
|
))
|
|
|
|
val commonSettings = Seq(
|
|
sonatypeProfileName := "net.kemitix",
|
|
scalaVersion := "2.13.0",
|
|
scalacOptions ++= Seq(
|
|
"-Ywarn-unused:imports",
|
|
"-Xfatal-warnings",
|
|
"-feature",
|
|
"-deprecation",
|
|
"-unchecked",
|
|
"-language:postfixOps",
|
|
"-language:higherKinds"),
|
|
wartremoverErrors ++= Warts.unsafe.filterNot(wart => List(
|
|
Wart.Any,
|
|
Wart.Nothing,
|
|
Wart.Serializable,
|
|
Wart.NonUnitStatements,
|
|
Wart.StringPlusAny
|
|
).contains(wart)),
|
|
test in assembly := {}
|
|
)
|
|
|
|
val applicationSettings = Seq(
|
|
name := "thorp",
|
|
)
|
|
val testDependencies = Seq(
|
|
libraryDependencies ++= Seq(
|
|
"org.scalatest" %% "scalatest" % "3.0.8" % Test,
|
|
"org.scalamock" %% "scalamock" % "4.4.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.610",
|
|
// override the versions AWS uses, which is they do to preserve Java 6 compatibility
|
|
"com.fasterxml.jackson.core" % "jackson-databind" % "2.9.9.3",
|
|
"com.fasterxml.jackson.dataformat" % "jackson-dataformat-cbor" % "2.9.9",
|
|
"javax.xml.bind" % "jaxb-api" % "2.3.1"
|
|
)
|
|
)
|
|
val zioDependencies = Seq(
|
|
libraryDependencies ++= Seq (
|
|
"dev.zio" %% "zio" % "1.0.0-RC12-1",
|
|
"dev.zio" %% "zio-streams" % "1.0.0-RC12-1"
|
|
)
|
|
)
|
|
|
|
val eipDependencies = Seq(
|
|
libraryDependencies ++= Seq(
|
|
"net.kemitix" %% "eip-zio" % "0.3.1"
|
|
)
|
|
)
|
|
|
|
lazy val thorp = (project in file("."))
|
|
.settings(commonSettings)
|
|
.aggregate(app, cli, `storage-aws`, lib, `storage`, domain)
|
|
|
|
lazy val app = (project in file("app"))
|
|
.settings(commonSettings)
|
|
.settings(mainClass in assembly := Some("net.kemitix.thorp.Main"))
|
|
.settings(applicationSettings)
|
|
.settings(eipDependencies)
|
|
.settings(Seq(
|
|
assemblyOption in assembly := (
|
|
assemblyOption in assembly).value
|
|
.copy(prependShellScript =
|
|
Some(defaultShellScript)),
|
|
assemblyJarName in assembly := "thorp"
|
|
))
|
|
.dependsOn(cli)
|
|
.dependsOn(lib)
|
|
.dependsOn(`storage-aws`)
|
|
|
|
lazy val cli = (project in file("cli"))
|
|
.settings(commonSettings)
|
|
.settings(testDependencies)
|
|
.dependsOn(config)
|
|
.dependsOn(filesystem % "test->test")
|
|
|
|
lazy val `storage-aws` = (project in file("storage-aws"))
|
|
.settings(commonSettings)
|
|
.settings(assemblyJarName in assembly := "storage-aws.jar")
|
|
.settings(awsSdkDependencies)
|
|
.settings(testDependencies)
|
|
.dependsOn(storage)
|
|
.dependsOn(filesystem % "compile->compile;test->test")
|
|
.dependsOn(console)
|
|
.dependsOn(lib)
|
|
|
|
lazy val lib = (project in file("lib"))
|
|
.settings(commonSettings)
|
|
.settings(assemblyJarName in assembly := "lib.jar")
|
|
.settings(testDependencies)
|
|
.enablePlugins(BuildInfoPlugin)
|
|
.settings(
|
|
buildInfoKeys := Seq[BuildInfoKey](name, version),
|
|
buildInfoPackage := "thorp"
|
|
)
|
|
.dependsOn(storage)
|
|
.dependsOn(console)
|
|
.dependsOn(config)
|
|
.dependsOn(domain % "compile->compile;test->test")
|
|
.dependsOn(filesystem % "compile->compile;test->test")
|
|
|
|
lazy val storage = (project in file("storage"))
|
|
.settings(commonSettings)
|
|
.settings(zioDependencies)
|
|
.settings(assemblyJarName in assembly := "storage.jar")
|
|
.dependsOn(uishell)
|
|
.dependsOn(domain)
|
|
|
|
lazy val uishell = (project in file("uishell"))
|
|
.settings(commonSettings)
|
|
.settings(zioDependencies)
|
|
.settings(eipDependencies)
|
|
.settings(assemblyJarName in assembly := "uishell.jar")
|
|
.dependsOn(config)
|
|
.dependsOn(console)
|
|
.dependsOn(filesystem)
|
|
|
|
lazy val console = (project in file("console"))
|
|
.settings(commonSettings)
|
|
.settings(zioDependencies)
|
|
.settings(assemblyJarName in assembly := "console.jar")
|
|
.dependsOn(domain)
|
|
|
|
lazy val config = (project in file("config"))
|
|
.settings(commonSettings)
|
|
.settings(zioDependencies)
|
|
.settings(testDependencies)
|
|
.settings(commandLineParsing)
|
|
.settings(assemblyJarName in assembly := "config.jar")
|
|
.dependsOn(domain % "compile->compile;test->test")
|
|
.dependsOn(filesystem)
|
|
|
|
lazy val filesystem = (project in file("filesystem"))
|
|
.settings(commonSettings)
|
|
.settings(zioDependencies)
|
|
.settings(testDependencies)
|
|
.settings(assemblyJarName in assembly := "filesystem.jar")
|
|
.dependsOn(domain % "compile->compile;test->test")
|
|
|
|
lazy val domain = (project in file("domain"))
|
|
.settings(commonSettings)
|
|
.settings(assemblyJarName in assembly := "domain.jar")
|
|
.settings(testDependencies)
|
|
.settings(zioDependencies)
|