* lib.FileScannerTest: convert to Java
* lib.Filters: convert to Java
* lib.FiltersTest: convert to Java
* lib.Archive: convert to Java
* lib.LocalFileSystem: convert to Java
* domain.Channel: better channel termination
* domain.Channel: improve assurance that threads die
* Ensure uisink and storage shutdown when exiting program
* domain.HashesTest: clean up
* domain.Channel.run() already shuts down channel when runner finishes
* lib.FileScannerTest: add listener before run
* domain.Channel: add lock around take and only interrupt if waiting
* .run: add intellij test run configurations
* app. update in-code version
* app: chain ui channel construction
* domain.Channel: add tracing option and simplify thread naming
* storage-aws: use default multipartUploadThreshold
* app: force exit once program is completed
* domain.channel: split up and move Channel to its own package
* lib.LocalFileSystemTest: convert to Java
* lib.SequencedAction: convert to Java
* domain.LocalFile: don’t box file length
* lib.FileScannerTest: include hashes
* lib.UnversionedMirrorArchive: convert to Java
* lib: remove scala dependencies
* [BROKEN]Remove ZIO and EIP-ZIO
* [BROKEN]uishell.UIShell.receiver: implement
* [BROKEN]domain.Channel: new implementation replacing MessageChannel
* [BROKEN] use domain.Channel
* Shutdown filescanner channel when finished
* start the uiChannel
* domain.Channel: channel completes once shutdown and queue empty
* uishell: down use eraseLineForward in batch mode
* lib: set file runner before adding listener
* uishell: don’t log do nothing events when not in batch mode
* domain.Channel: if exception in child thread then shutdown channel
* uishell: use correct line endings for showing chosen actions
* domain.Channel: don’t wait for shutdown if not running
* domain: remove legacy MessageChannel
* domain.Channel: don’t hold thread array
* lib.LocalFileSystem: restore delete scanner
* lib.LocalFileSystem: shutdown deletetion channel
* domain.Channel: improved shutdown logic
* clean up
* uishell.UploadProgressEvent: convert to Java
* uishell.UIEvent: convert to Java
* uishell.ProgressUI: convert to Java
* uishell.ProgressEvent: remove unused
* lib.MessageChannel: added as replacement for eip-zio version
* domain: move MessageChannel to module
* storage: convert to Java
* Add root and parent pom.xml files
* parent: add scala-maven-plugin to pluginManagement
* fix packaging
* domain: add module
* parent,domain: add dependencies
* maven: add filesystem module
* parent: disable coverage and pitest
* domain: move classes from test to main as they are used in filesystem
* config: add module
* console: add module
* Add reactor-graph
* fix typo
* uishell: add module
* Restore explicit dependencies
Don’t depend upon transitive dependencies if we want to be able to restructure module dependencies.
* storage: add module
* lib: add module
Included adding a Resource case class in filesystem to replace one generated by a scala plugin
* storage-aws: add module
* cli: add module
* app: add module
* app: make jar runnable
* Updated build instructions in README
* Convert readme to markdown
* Add reactor graph to readme
* Switch Guthub Actions to using Maven to build
* [domain] Define Hashes in domain package
* [filesystem] Load and parse any .thorp.cache files found
* [filesystem] Use cached file data when available and up-to-date
* [lib] FileScanner refactoring
* [filesystem] scan sub-dirs first to minimise time cache is on heap
* [filesystem] Write new cache data to temp file
* [lib] replace cache file when finished updating
* [filesystem] AppendLines to correct file with new lines
* [domain] decode HashType from String
* [filesystem] Store last modified time as epoch milliseconds
* [filesystem] parse lastmodified as a long
* [filesystem] use all hash values in cache
* [lib] FileScanner rearrange code
* [lib] Create and use a single cache file per source
* [storage-aws] Use ETag hash from cache when available
* [filesystem] Merge file data together correctly
* [filesystem] Handle exceptions thrown by Files.mode correctly
* [readme] Add section on caching
* [changelog] updated
* [changelog] add pending dependencies notes
* [lib] Filters should not name methods after their defining object
* [lib] Fix up test
* [storage-aws] Refactoring
* [lib] Add test for FileScanner
* [lib] Add LocalFileSystemTest for scanCopyUpload
* [lib] Add LocalFileSystem tests for scanDelete
Also send a UIEvent for ActionChosen(ToDelete)
* [lib] LocalFileSystemTest can handle files in any order
* [lib] LocalFileSystemTest can handle files in any order #2
Don't include accountCounter or byteCounter are the order can change.
* [domain] Remove LocalFile.relativeToSource
* [sbt] Add missing modules to aggregate
* [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
Prevents the situation where a second progress update arrives while
the first is still on the process of being processed. The new update
is blocked until the first is completed.
* [domain] rename S3MetaData as MatchedMetadata
* [domain] rename S3ObjectsData as RemoteObjects
* [core] ActionGenerator refactoring
* [core] ActionGenerator.createAction renamed and no longer a stream
* [core] ActionGenerator refactor
* [core] ActionGenerator Usage of head on collections