diff --git a/.github/GitHub-Actions.org b/.github/GitHub-Actions.org
new file mode 100644
index 0000000..1c882b8
--- /dev/null
+++ b/.github/GitHub-Actions.org
@@ -0,0 +1,41 @@
+* Deploying using Github Actions
+
+** Actions definition: workflow/sonatype-deploy.yml
+
+When a GitHub Release is created, usually from a tag, this action will trigger.
+
+Using JDK8 the software will be packaged, including running any tests.
+
+Then the Deploy script will sign the created artifacts then deploy them according to the distributionManagement configuration in the `pom.xml`.
+
+** Deploy Script
+
+Uses a signing key provided from the GitHub Actions Secrets as an environment variable to sign the artifact(s) before they are then deployed.
+
+*** Inputs
+
+**** DEPLOY_PROJECTS (optional)
+
+An optional list of modules in a multi-module project to be deployed. If this value is not specified, then all projects will be deployed.
+
+** Maven Configuration
+
+Picks up the credentials from Environment variables for authenticating both with GPG and with the target deployment server (e.g. sonatype-nexus).
+
+*** Inputs
+
+**** NEXUS_USERNAME
+
+The username for your account on the deployment server.
+
+**** NEXUS_PASSWORD
+
+The password for your account on the deployement server.
+
+**** GPG_KEYNAME
+
+The key to use when signing.
+
+**** GPG_PASSPHRASE
+
+The passphrase to unlock the key to use when signing.
diff --git a/.github/NOTES b/.github/NOTES
new file mode 100644
index 0000000..64253c9
--- /dev/null
+++ b/.github/NOTES
@@ -0,0 +1,53 @@
+Add subkeys:
+
+????
+
+Publish:
+
+gpg --send-keys --keyserver keyserver.ubuntu.com $KEYID
+gpg --send-keys --keyserver pgp.mit.edu $KEYID
+gpg --send-keys --keyserver pool.sks-keyservers.net $KEYID
+
+Backup:
+
+gpg --export --armor pcampbell@kemitix.net > gpg-key-backup.asc
+gpg --export-secret-keys --armor pcampbell@kemitix.net >> gpg-key-backup.asc
+
+Export sub-keys:
+
+gpg --export-secret-subkeys pcampbell@kemitix.net > subkeys
+
+Remove master keys:
+
+gpg --delete-secret-key pcampbell@kemitix.net
+
+Import sub-keys and clean up:
+
+gpg --import subkeys
+
+shred --remove subkeys
+
+Delete any encryption subkeys:
+
+gpg --edit-key pcampbell@kemitix.net
+
+2
+delkey
+save
+
+Change passphrase:
+
+gpg --edit-key pcampbell@kemitix.net
+passwd
+save
+
+Export keys:
+
+gpg --export --armor pcampbell@kemitix.net > codesigning.asc
+gpg --export-secret-keys --armor pcampbell@kemitix.net >> codesigning.asc
+
+Encrypt keys:
+
+gpg --symmetric --cipher-algo AES256 codesigning.asc
+
+shred codesigning.asc
diff --git a/.github/codesigning.asc.gpg b/.github/codesigning.asc.gpg
new file mode 100644
index 0000000..f5c71e0
Binary files /dev/null and b/.github/codesigning.asc.gpg differ
diff --git a/.github/settings.xml b/.github/settings.xml
new file mode 100644
index 0000000..8791e47
--- /dev/null
+++ b/.github/settings.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ sonatype-nexus-snapshots
+ ${env.NEXUS_USERNAME}
+ ${env.NEXUS_PASSWORD}
+
+
+ sonatype-nexus-staging
+ ${env.NEXUS_USERNAME}
+ ${env.NEXUS_PASSWORD}
+
+
+
+
+ gpg-sign
+
+ true
+
+
+ gpg
+ ${env.GPG_KEYNAME}
+ ${env.GPG_PASSPHRASE}
+
+
+
+
diff --git a/.github/workflows/maven-build.yml b/.github/workflows/maven-build.yml
new file mode 100644
index 0000000..0c2b94e
--- /dev/null
+++ b/.github/workflows/maven-build.yml
@@ -0,0 +1,26 @@
+# This workflow will build a Java project with Maven
+# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
+
+name: maven
+
+on:
+ push:
+ branches: '*'
+ pull_request:
+ branches: '*'
+
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ java: [ 8 ]
+ steps:
+ - uses: kamiazya/setup-graphviz@v1
+ - uses: actions/checkout@v2
+ - name: setup-jdk-${{ matrix.java }}
+ uses: actions/setup-java@v1
+ with:
+ java-version: ${{ matrix.java }}
+ - name: build-jar
+ run: mvn -B install
diff --git a/.github/workflows/scala.yml b/.github/workflows/scala.yml
deleted file mode 100644
index f82c12d..0000000
--- a/.github/workflows/scala.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-name: Scala CI
-
-on:
- push:
- branches: '*'
- pull_request:
- branches: '*'
-
-jobs:
- build:
-
- runs-on: ubuntu-latest
-
- steps:
- - uses: actions/checkout@v1
- - name: Set up JDK 1.8
- uses: actions/setup-java@v1
- with:
- java-version: 1.8
- - name: Build with Scala Build Tool
- run: sbt test
diff --git a/.github/workflows/sonatype-deploy.yml b/.github/workflows/sonatype-deploy.yml
new file mode 100644
index 0000000..63b14fe
--- /dev/null
+++ b/.github/workflows/sonatype-deploy.yml
@@ -0,0 +1,38 @@
+name: Deploy to Sonatype Nexus
+
+on:
+ release:
+ types: [created]
+
+jobs:
+ deploy:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - name: Set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Build with Maven
+ run: mvn -B install
+ - name: Nexus Repo Publish
+ run: |
+ gpg --quiet \
+ --batch \
+ --yes \
+ --decrypt \
+ --passphrase="${{ secrets.GPG_PASSPHRASE }}" \
+ --output codesigning.asc \
+ .github/codesigning.asc.gpg
+ gpg --batch \
+ --fast-import codesigning.asc
+ mvn --settings .github/settings.xml \
+ -Dskip-Tests=true \
+ -P release \
+ -B \
+ deploy
+ env:
+ NEXUS_USERNAME: ${{ secrets.NEXUS_USERNAME }}
+ NEXUS_PASSWORD: ${{ secrets.NEXUS_PASSWORD }}
+ GPG_KEYNAME: ${{ secrets.GPG_KEYNAME }}
+ GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
diff --git a/README.org b/README.md
similarity index 63%
rename from README.org
rename to README.md
index eca299f..24d54b9 100644
--- a/README.org
+++ b/README.md
@@ -1,20 +1,18 @@
-* thorp
+# thorp
Synchronisation of files with S3 using the hash of the file contents.
-[[https://www.codacy.com/app/kemitix/thorp][file:https://img.shields.io/codacy/grade/c1719d44f1f045a8b71e1665a6d3ce6c.svg?style=for-the-badge]]
-[[https://search.maven.org/search?q=net.kemitix.thorp][file:https://img.shields.io/maven-central/v/net.kemitix.thorp/thorp_2.12.svg?style=for-the-badge]]
+[![Maven Central](https://img.shields.io/maven-central/v/net.kemitix.thorp/thorp_2.12.svg?style=for-the-badge)](https://search.maven.org/search?q=net.kemitix.thorp)
-Originally based on Alex Kudlick's [[https://github.com/akud/aws-s3-sync-by-hash][aws-s3-sync-by-hash]].
+Originally based on Alex Kudlick's [aws-s3-sync-by-hash](https://github.com/akud/aws-s3-sync-by-hash).
-The normal ~aws s3 sync ...~ command only uses the time stamp of files
+The normal `aws s3 sync ...` command only uses the time stamp of files
to decide what files need to be copied. This utility looks at the md5
hash of the file contents.
-* Usage
+# Usage
- #+begin_example
- thorp
+ $ thorp
Usage: thorp [options]
-V, --version Display the version and quit
@@ -28,65 +26,66 @@ hash of the file contents.
-d, --debug Enable debug logging
--no-global Ignore global configuration
--no-user Ignore user configuration
- #+end_example
-If you don't provide a ~source~ the current diretory will be used.
+If you don't provide a `source` the current directory will be used.
-The ~--include~ and ~--exclude~ parameters can be used more than once.
+The `--include` and `--exclude` parameters can be used more than once.
-The ~--source~ parameter can be used more than once, in which case,
+The `--source` parameter can be used more than once, in which case,
all files in all sources will be consolidated into the same
bucket/prefix.
-** Batch mode
+## Batch mode
Batch mode disable the ANSI console display and logs simple messages
that can be written to a file.
-* Configuration
+# Configuration
Configuration will be read from these files:
- - Global: ~/etc/thorp.conf~
- - User: ~ ~/.config/thorp.conf~
- - Source: ~${source}/.thorp.conf~
+ - Global: `/etc/thorp.conf`
+ - User: `~/.config/thorp.conf`
+ - Source: `${source}/.thorp.conf`
Command line arguments override those in Source, which override
those in User, which override those Global, which override any
built-in config.
- When there is more than one source, only the first ".thorp.conf"
+ When there is more than one source, only the first `.thorp.conf`
file found will be used.
Built-in config consists of using the current working directory as
- the ~source~.
+ the `source`.
Note, that ~include~ and ~exclude~ are cumulative across all
configuration files.
-* Caching
+# Caching
The last modified time for files is used to decide whether to calculate the hash values for the file. If a file has not been updated, then the hash values stored in the `.thorp.cache` file located in the root of the source is used. Otherwise the file will be read to caculate the the new hashes.
-* Behaviour
+# Behaviour
When considering a local file, the following table governs what should happen:
-|---+------------+------------+------------------+--------------------+---------------------|
| # | local file | remote key | hash of same key | hash of other keys | action |
-|---+------------+------------+------------------+--------------------+---------------------|
+|---|------------|------------|------------------|--------------------|---------------------|
| 1 | exists | exists | matches | - | do nothing |
| 2 | exists | is missing | - | matches | copy from other key |
| 3 | exists | is missing | - | no matches | upload |
| 4 | exists | exists | no match | matches | copy from other key |
| 5 | exists | exists | no match | no matches | upload |
| 6 | is missing | exists | - | - | delete |
-|---+------------+------------+------------------+--------------------+---------------------|
-* Executable JAR
+# Executable JAR
-To build as an executable jar, perform `sbt assembly`
+To build as an executable jar, perform `mvn package`
-This will create the file `cli/target/scala-2.13/thorp`
+This will create the file `app/target/thorp-${version}-jar-with-dependencies.jar`
-Copy this file to your `PATH`.
+Copy and rename this file into your `PATH`.
+
+# Structure/Dependencies
+
+![Dependency Graph](docs/images/reactor-graph.png)
diff --git a/app/pom.xml b/app/pom.xml
new file mode 100644
index 0000000..c29cae9
--- /dev/null
+++ b/app/pom.xml
@@ -0,0 +1,100 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp
+ thorp
+
+
+
+
+ net.kemitix.thorp
+ thorp-cli
+
+
+ net.kemitix.thorp
+ thorp-config
+
+
+ net.kemitix.thorp
+ thorp-domain
+
+
+ net.kemitix.thorp
+ thorp-filesystem
+
+
+ net.kemitix.thorp
+ thorp-lib
+
+
+ net.kemitix.thorp
+ thorp-storage
+
+
+ net.kemitix.thorp
+ thorp-storage-aws
+
+
+ net.kemitix.thorp
+ thorp-uishell
+
+
+
+
+ com.github.scopt
+ scopt_2.13
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ net.kemitix
+ eip-zio_2.13
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.3.0
+
+
+ jar-with-dependencies
+
+
+
+ net.kemitix.thorp.Main
+
+
+
+
+
+ package
+
+ single
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/scala/net/kemitix/thorp/Program.scala b/app/src/main/scala/net/kemitix/thorp/Program.scala
index 271943d..2ceb731 100644
--- a/app/src/main/scala/net/kemitix/thorp/Program.scala
+++ b/app/src/main/scala/net/kemitix/thorp/Program.scala
@@ -22,7 +22,8 @@ import scala.io.AnsiColor.{WHITE, RESET}
trait Program {
- lazy val version = s"${WHITE}Thorp v${thorp.BuildInfo.version}$RESET"
+ val version = "0.11.0"
+ lazy val versionLabel = s"${WHITE}Thorp v${version}$RESET"
def run(args: List[String]): ZIO[
Storage with Console with Config with Clock with FileSystem with Hasher with FileScanner,
@@ -32,7 +33,7 @@ trait Program {
cli <- CliArgs.parse(args)
config <- ConfigurationBuilder.buildConfig(cli)
_ <- Config.set(config)
- _ <- Console.putStrLn(version)
+ _ <- Console.putStrLn(versionLabel)
_ <- ZIO.when(!showVersion(cli))(executeWithUI.catchAll(handleErrors))
} yield ()
}
diff --git a/cli/pom.xml b/cli/pom.xml
new file mode 100644
index 0000000..6b6550a
--- /dev/null
+++ b/cli/pom.xml
@@ -0,0 +1,53 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-cli
+ cli
+
+
+
+
+ net.kemitix.thorp
+ thorp-config
+
+
+ net.kemitix.thorp
+ thorp-filesystem
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ org.scalatest
+ scalatest_2.13
+ test
+
+
+ org.scalamock
+ scalamock_2.13
+ test
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/config/pom.xml b/config/pom.xml
new file mode 100644
index 0000000..9b3a429
--- /dev/null
+++ b/config/pom.xml
@@ -0,0 +1,69 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-config
+ config
+
+
+
+
+ net.kemitix.thorp
+ thorp-domain
+
+
+ net.kemitix.thorp
+ thorp-filesystem
+
+
+
+
+ com.github.scopt
+ scopt_2.13
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ dev.zio
+ zio_2.13
+
+
+ dev.zio
+ zio-streams_2.13
+
+
+
+
+ org.scalatest
+ scalatest_2.13
+ test
+
+
+ org.scalamock
+ scalamock_2.13
+ test
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/console/pom.xml b/console/pom.xml
new file mode 100644
index 0000000..8e32b2c
--- /dev/null
+++ b/console/pom.xml
@@ -0,0 +1,47 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-console
+ console
+
+
+
+
+ net.kemitix.thorp
+ thorp-domain
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ dev.zio
+ zio_2.13
+
+
+ dev.zio
+ zio-streams_2.13
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/images/reactor-graph.png b/docs/images/reactor-graph.png
new file mode 100644
index 0000000..cbeefc6
Binary files /dev/null and b/docs/images/reactor-graph.png differ
diff --git a/domain/pom.xml b/domain/pom.xml
new file mode 100644
index 0000000..00d57e8
--- /dev/null
+++ b/domain/pom.xml
@@ -0,0 +1,59 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-domain
+ domain
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ net.kemitix
+ eip-zio_2.13
+
+
+
+
+ dev.zio
+ zio_2.13
+
+
+ dev.zio
+ zio-streams_2.13
+
+
+
+
+ org.scalatest
+ scalatest_2.13
+ test
+
+
+ org.scalamock
+ scalamock_2.13
+ test
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/domain/src/test/scala/net/kemitix/thorp/domain/MD5HashData.scala b/domain/src/main/scala/net/kemitix/thorp/domain/MD5HashData.scala
similarity index 100%
rename from domain/src/test/scala/net/kemitix/thorp/domain/MD5HashData.scala
rename to domain/src/main/scala/net/kemitix/thorp/domain/MD5HashData.scala
diff --git a/domain/src/test/scala/net/kemitix/thorp/domain/TemporaryFolder.scala b/domain/src/main/scala/net/kemitix/thorp/domain/TemporaryFolder.scala
similarity index 100%
rename from domain/src/test/scala/net/kemitix/thorp/domain/TemporaryFolder.scala
rename to domain/src/main/scala/net/kemitix/thorp/domain/TemporaryFolder.scala
diff --git a/filesystem/pom.xml b/filesystem/pom.xml
new file mode 100644
index 0000000..9efae37
--- /dev/null
+++ b/filesystem/pom.xml
@@ -0,0 +1,59 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-filesystem
+ filesystem
+
+
+
+
+ net.kemitix.thorp
+ thorp-domain
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ dev.zio
+ zio_2.13
+
+
+ dev.zio
+ zio-streams_2.13
+
+
+
+
+ org.scalatest
+ scalatest_2.13
+ test
+
+
+ org.scalamock
+ scalamock_2.13
+ test
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/filesystem/src/main/scala/net/kemitix/thorp/filesystem/Resource.scala b/filesystem/src/main/scala/net/kemitix/thorp/filesystem/Resource.scala
new file mode 100644
index 0000000..bf493cd
--- /dev/null
+++ b/filesystem/src/main/scala/net/kemitix/thorp/filesystem/Resource.scala
@@ -0,0 +1,15 @@
+package net.kemitix.thorp.filesystem
+
+import java.io.File
+import java.nio.file.{Path, Paths}
+
+final case class Resource(
+ cls: Object,
+ file: String
+) {
+
+ def toPath: Path = Paths.get(cls.getClass.getResource(file).getPath)
+ def toFile: File = toPath.toFile
+ def getCanonicalPath: String = toPath.toFile.getCanonicalPath
+ def length: Long = toFile.length()
+}
diff --git a/lib/pom.xml b/lib/pom.xml
new file mode 100644
index 0000000..6a3bcd2
--- /dev/null
+++ b/lib/pom.xml
@@ -0,0 +1,71 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-lib
+ lib
+
+
+
+
+ net.kemitix.thorp
+ thorp-domain
+
+
+ net.kemitix.thorp
+ thorp-filesystem
+
+
+ net.kemitix.thorp
+ thorp-config
+
+
+ net.kemitix.thorp
+ thorp-console
+
+
+ net.kemitix.thorp
+ thorp-storage
+
+
+
+
+ com.github.scopt
+ scopt_2.13
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ org.scalatest
+ scalatest_2.13
+ test
+
+
+ org.scalamock
+ scalamock_2.13
+ test
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/parent/pom.xml b/parent/pom.xml
new file mode 100644
index 0000000..941ca2d
--- /dev/null
+++ b/parent/pom.xml
@@ -0,0 +1,183 @@
+
+
+ 4.0.0
+
+ net.kemitix
+ kemitix-parent
+ 5.3.0
+
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ pom
+
+
+ 4.4.0
+ 2.16
+ 2.7.0
+ 2.13.0
+
+
+
+
+
+
+ net.kemitix.thorp
+ thorp-domain
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-filesystem
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-config
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-console
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-uishell
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-storage
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-lib
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-storage-aws
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-cli
+ ${project.version}
+
+
+ net.kemitix.thorp
+ thorp-app
+ ${project.version}
+
+
+
+
+ org.scala-lang
+ scala-library
+ ${scala-library.version}
+
+
+
+ dev.zio
+ zio_2.13
+ 1.0.0-RC16
+
+
+ dev.zio
+ zio-streams_2.13
+ 1.0.0-RC16
+
+
+
+ net.kemitix
+ eip-zio_2.13
+ 0.3.2
+
+
+
+ com.github.scopt
+ scopt_2.13
+ 4.0.0-RC2
+
+
+
+ org.scalatest
+ scalatest_2.13
+ 3.0.8
+
+
+ org.scalamock
+ scalamock_2.13
+ 4.4.0
+
+
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+ ${scala-maven-plugin.version}
+
+
+ -Ywarn-unused:imports
+ -Xfatal-warnings
+ -feature
+ -deprecation
+ -unchecked
+ -language:postfixOps
+ -language:higherKinds
+
+
+
+
+ scala-compile-first
+ process-resources
+
+ add-source
+ compile
+
+
+
+ scala-test-compile
+ process-test-resources
+
+ testCompile
+
+
+
+
+
+
+
+
+ io.repaint.maven
+ tiles-maven-plugin
+ ${tiles-maven-plugin.version}
+ true
+
+
+ net.kemitix.tiles:maven-plugins:${kemitix-maven-tiles.version}
+ net.kemitix.tiles:enforcer:${kemitix-maven-tiles.version}
+ net.kemitix.tiles:compiler-jdk-8:${kemitix-maven-tiles.version}
+ net.kemitix.tiles:huntbugs:${kemitix-maven-tiles.version}
+ net.kemitix.tiles:pmd:${kemitix-maven-tiles.version}
+ net.kemitix.tiles:digraph:${kemitix-maven-tiles.version}
+ net.kemitix.tiles:testing:${kemitix-maven-tiles.version}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..fdce387
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,53 @@
+
+ 4.0.0
+
+ net.kemitix.thorp
+ thorp-root
+ DEV-SNAPSHOT
+ pom
+
+
+ parent
+ domain
+ filesystem
+ config
+ console
+ uishell
+ storage
+ lib
+ storage-aws
+ cli
+ app
+
+
+
+ 1.45
+
+
+
+
+
+ org.fusesource.mvnplugins
+ maven-graph-plugin
+ ${maven-graph-plugin.version}
+
+
+ validate
+
+ reactor
+
+
+
+
+ TB
+ true
+ true
+ true
+ test,provided
+ ${project.basedir}/docs/images/reactor-graph.png
+
+
+
+
+
+
diff --git a/storage-aws/pom.xml b/storage-aws/pom.xml
new file mode 100644
index 0000000..a2309f4
--- /dev/null
+++ b/storage-aws/pom.xml
@@ -0,0 +1,83 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-storage-aws
+ storage-aws
+
+
+
+
+ net.kemitix.thorp
+ thorp-storage
+
+
+ net.kemitix.thorp
+ thorp-filesystem
+
+
+ net.kemitix.thorp
+ thorp-console
+
+
+ net.kemitix.thorp
+ thorp-lib
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ com.amazonaws
+ aws-java-sdk-s3
+ 1.11.792
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+ 2.10.4
+
+
+ com.fasterxml.jackson.dataformat
+ jackson-dataformat-cbor
+ 2.10.4
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.3.1
+
+
+
+
+ org.scalatest
+ scalatest_2.13
+ test
+
+
+ org.scalamock
+ scalamock_2.13
+ test
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/storage-aws/src/test/scala/net/kemitix/thorp/storage/aws/UploaderTest.scala b/storage-aws/src/test/scala/net/kemitix/thorp/storage/aws/UploaderTest.scala
index 4b10edf..71fe84e 100644
--- a/storage-aws/src/test/scala/net/kemitix/thorp/storage/aws/UploaderTest.scala
+++ b/storage-aws/src/test/scala/net/kemitix/thorp/storage/aws/UploaderTest.scala
@@ -25,8 +25,8 @@ class UploaderTest extends FreeSpec with MockFactory {
val uiChannel: UChannel[Any, UIEvent] = zioMessage => ()
"upload" - {
- val aSource: File = Resource(this, "")
- val aFile: File = Resource(this, "small-file")
+ val aSource: File = Resource(this, "").toFile
+ val aFile: File = Resource(this, "small-file").toFile
val aHash = MD5Hash("aHash")
val hashes = Map[HashType, MD5Hash](MD5 -> aHash)
val remoteKey = RemoteKey("aRemoteKey")
diff --git a/storage/pom.xml b/storage/pom.xml
new file mode 100644
index 0000000..529fd2f
--- /dev/null
+++ b/storage/pom.xml
@@ -0,0 +1,51 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-storage
+ storage
+
+
+
+
+ net.kemitix.thorp
+ thorp-uishell
+
+
+ net.kemitix.thorp
+ thorp-domain
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ dev.zio
+ zio_2.13
+
+
+ dev.zio
+ zio-streams_2.13
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file
diff --git a/uishell/pom.xml b/uishell/pom.xml
new file mode 100644
index 0000000..bb40c29
--- /dev/null
+++ b/uishell/pom.xml
@@ -0,0 +1,73 @@
+
+ 4.0.0
+
+
+ net.kemitix.thorp
+ thorp-parent
+ DEV-SNAPSHOT
+ ../parent/pom.xml
+
+
+ thorp-uishell
+ uishell
+
+
+
+
+ net.kemitix.thorp
+ thorp-config
+
+
+ net.kemitix.thorp
+ thorp-console
+
+
+ net.kemitix.thorp
+ thorp-filesystem
+
+
+
+
+ org.scala-lang
+ scala-library
+
+
+
+
+ net.kemitix
+ eip-zio_2.13
+
+
+
+
+ dev.zio
+ zio_2.13
+
+
+ dev.zio
+ zio-streams_2.13
+
+
+
+
+ org.scalatest
+ scalatest_2.13
+ test
+
+
+ org.scalamock
+ scalamock_2.13
+ test
+
+
+
+
+
+
+ net.alchim31.maven
+ scala-maven-plugin
+
+
+
+
+
\ No newline at end of file