* [changelog] Updated
* [readme] Updated
* [domain] Config Add batch-mode flag
* [core] ConfigOption Add BatchMode option
* [core] ConfigQuery Add batchMode query
Also replaced verbose exists case clauses with a simple contains.
* [core] ConfigOptions added to replace Seq[ConfigOption]
* [core] Syncronise rename method to createPlan
* [cli] Program rename apply as run
* [storage-aws] S3StorageServiceBuilder stop using IO to create object
* [storage-aws] S3StorageServiceBuilder make default service lazy
* [storage-aws] Rename S3ClientCopier => Copier
* [storage-aws] Rename S3ClientDeleter => Deleter
* [storage-aws] Rename S3ClientObjectLister => Lister
* [storage-aws] Only attach upload listener when in batch mode
Only detects batch mode when selected as a command line option
* [core] Synchronise use leftMap rather than swap.map.swap
* [cli] ParseArgs add `-B` and `--batch` options to enable batch mode
* [core] ThorpArchive logs file uploaded when in batch mode
* [sbt] make name and version available within Scala
Available as `thorp.BuildInfo._`
* [core] ConfigOption Add Version option
* [cli] ParseArgs add command-line options `-V` and `--version`
* [core] ConfigQuery add showVersion query
* [cli] Program shows version then exit
* [cli] Main don't show "Done"
* [sbt] set name for assembly jar
* [travis] run assembly prior to release
* [sbt] disable publishing non-cli or thorp-lib modules
* [travis] alternate format for multiple commands in script
* [sbt,travis] Deploy releases and snapshots to sonatype
* [travis] remove oracle JDK builds
* [travis] remove 'compile' job
* [travis] Try adding scala 2.13
* [travis] test using openjdk8 rather than 10
* [travis] force use of scala version, overriding sbt version
* Revert "[travis] Try adding scala 2.13"
This reverts commit 6725199e009ae1f809247bbc0851b62d63121993.
* Revert "[travis] force use of scala version, overriding sbt version"
This reverts commit 21c94992f40cf2ef39c5126e67b66feaabe1b2c0.
* [sbt] Group modules under n.k.thorp organisation
* [storage-aws] ETagGenerator add stub
* [core] MD5HashGenerator add hex and digest helpers
* [domain] MD5Hash can always provide base64 and also digest
Rather that store the base 64 digest some of the time, simply decode
it from the hex hash. The same for the binary digest.
MD5Hash is now cleaner now that it no longer has Option parameters.
* [core] MD5HashGenerator add stubs to allow reading file chunks
* [domain] MD5HashData add sub-objects
* [domain] MD5HashData move back into test where it belongs
* [sbt] add sbt-bloop plugin
* [domain] MD5HashData Add hash of big-file
* [domain] MD5HashData Add hash of big-file
* [core] MD5HashGenerator find end of chunk correctly
* [core] MD5HashGenerator offset is a Long
* [core] MD5HashGenerator don't read past the end of the file
* [storage-aws] ETagGenerator can reproduce ETags
* [storage-aws] ETagGeneratorTest added
* [storate-aws] ETagGenerator refactoring
* [storage-aws] ETageGenerator refactoring
* [core] SyncSuite remove redundant braces
* [storage-api] HashService added
* [storage-aws] S3HashService added
* [core] LocalFileStream refactoring
* [core] integrate HashService and ETagGenerator
* Optimise imports
* [domain] HexEncoder added to replace java 8 only DataTypeConverter
* [core] MD5HashGenerator refactoring
* [core] S3MetaDataEnricher refactoring
* [core] S3MetaDataEnricherSuite refactoring
* [storage-aws] ETagGeneratorTest refactoring
* [storage-aws] StorageServiceSuite refactoring
* [core] S3MetaDataEnricher refactoring
* [core] refactoring
* [storage-aws] refactoring
* [core,storage-{api,aws}] Allow Lister errors to be reported to user
* [cli,core,storage-*] Display simple error message when bucket is invalid
* [core] optimise imports
* [storate-aws] optimise imports
* [core] SyncSuite don't use get on an optional type
* [aws-lib] Uploader provide request with the already calculated md5 hash
* [aws-lib] remove unused accepts method
* [aws-lib] Uploader refactoring
* [domain] Config remove unused threshold and max retries items
* [core] Show upload errors in summary
* [domain] LocalFile add helper to explicitly compare by hash value
Looking to add an optional field to MD5Hash but we want to do our
checks here only on the hash value, not whether a digest is available
or not.
* [core] Sync refactoring
* [core] SyncSuite invoke subject inside it method and after declaring expectations
* [core] SyncSuite use the localfile hash rather than something arbitrary
* [cli] Add `--no-global` and `--no-user` options
* [core] LocalFileStream refactoring
* [core] SyncSuite: ignore user and global configuration files
* [domain] MD5Hash now can optionally store the base64 encoded hash
* [core] MD5HashGenerator pass the digest to MD5Hash
* [aws-lib] Uploader use the base64 encoded hash
* [changelog] updated
* [domain] rewrite and expand ansi codes available
* [aws-api] refactor progress-bar
* [domain] move progress-bar into Terminal
* [aws-api] remove unused value
* [domain] use unicode characters to get a smooth progress bar
* [core] rename the config supplied from CLI as such
This distinguishes it as config supplied from the command line.
* [core] add ConfigOption
* [core] ConfigOption can update a Config
* [core] new validator for config
* [domain] Config doesn't validate source any more
* [cli] PrintLogger default to not print debug messages
* [cli] Use ConfigOptions and new ConfigValidator
* [sbt] Use common settings for project root
* [domain] RemoteKey can handle when prefix is empty
* [cli] remove banner
* [domain] Logger can create version of itself with debug flipped
* [core] Build and validate Config within core module
This means that the `thorp-lib` module can validate its input from a
list of `ConfigOption`s.
* [core] refactor ConfigurationBuilder
* [core] refactor ConfigurationBuilder
* [sbt] starting back from tagless-final by using IO where needed
* [core] Add ParseConfigFile
* [sbt] Make cats-effect available from the domain
* Roll back from tagless-final to just use cat-effect's IO
* [core] extract ParseConfigLines
* [core] ConfigurationBuilder rename apply as buildConfig
* [core] ParseConfig[Files,Lines] rename apply methods
* [core] refactor ParseConfigFile and add tests
* [core] Sync fix call to run
* [core] SyncSuite update tests to use ConfigOptions
* [aws-api] TTFI UploadProgressLogging#logTransfer
* [aws-api] TTFI UploadProgressLogging#logRequestCycle
* [aws-api] TTFI UploadProgressLogging#logByteTransfer
* [aws-api] TTFI UploadProgressListener
* [aws-lib] TTFI UploaderLogging
* [aws-api] UploadProgressListener refactoring
* [aws-api] UploadProgressListener remove IO/Monad
This class is a wrapper for a callback method used by the AWS SDK.
Unfortunately you can't get the IO() created when that listener is
called by the SDK, so unless we manually run unsafeRunSync, as we have
done previously, it would never be executed.
This removes the IO monad entirely and simply runs the code when the
callback is triggered.
* [aws-lib] S3ClientLogging remove unused method
* [aws-lib] TTFI S3ClientLogging
* [aws-lib] TTFI S3ClientCopier
* [aws-lib] TTFI S3ClientObjectLister
* [aws-lib] TTFI Uploader
* [aws-lib] TTFI S3ClientDeleter
* [aws-api] TTFI S3Client
* [aws-lib] TTFI S3ClientBuilder and ThorpS3Client
* [core] TTFI ActionSubmitter
* [cli] TTFI Logger
* [core] TTFI MD5HashGenerator
* [core] TTFI LocalFileStream
* [core] Sync refactoring
* [core] TTFI Sync
* [aws-lib] S3ObjectsByHashSuite truncate lastmodified to match Date
* [aws-lib] ThorpS3ClientSuite truncate lastmodified to match Date
* [core] MD5HashGeneratorTest switch to Id from IO
* [sbt] restrict cats-effect to cli module, cats-core elsewhere
* [core] MD5HashGenerator collapse lines
* [domain] SizeTranslation includes decimals for larger sizes
* [core] MD5HashGenerator rewrite for memory efficiency
No longer attempt to create an Array the size of the file to be
parsed.
Now it creates a single small buffer and reads 8kb chunks in at a
time. Only creating an additional smaller buffer to read the tail of
the file.
Remove methods to parsing only part of a file are they were no longer
used, and remove the relevant tests.
* [aws-lib] Uploader refactoring
* [aws-lib] Uploader remove redundant braces
* [aws-lib] Uploader start upload inside IO
The upload method starts the upload to S3, so should be within the IO.
* [core] log count of errors
* [aws-lib] Uploader handle errors and count them