### Motivation:
Right now, the nightly CI is failing due to the package relying on old
decommissioned Swift toolchains (dev toolchains for 6.0).
### Modifications:
Updated the CI setup to be Swift 6.0+, bumped the tools version, but
kept the language mode to 5 for now.
Bumping of language mode from 5 to 6 can be done in a separate PR, this
PR is mainly to unblock nightly CI.
### Result:
Fixes nightly CI.
## Motivation
RediStack 1.x is going to be supported at least until 2.x is released, which is a few months away.
Developers who are on later versions of Swift will adopt later versions of NIO and other libraries, and after we merged !183 we required NIO 2.42.x which has a minimum Swift version of 5.5
## Changes
This back ports the CI config from `master` into this branch, with updates to the README to reflect the changes
Motivation:
The project was moved from Mordil/swift-redi-stack to Mordil/RediStack;
some URLs still point to swift-redi-stack.
Modifications:
- Update URLs in README and CHANGELOG
Result:
More accurate URLs; fewer warnings from GitLab :)
Motivation:
With the release of Swift 5.1, the official docker containers are available for both 16.04 and 18.04 of Linux - so the test matrix should include them.
Modifications:
- Add new 5.1 jobs for 18.04 linux and change 16.04 5.1 jobs to use the official docker images.
- Update the README to capture the changes
Result:
The number of configurations the library is tested against should be as wide as possible for regular interval testing passes.
Motivation:
As this project might take off and support be needed, users will want a direct line of communication to file support tickets.
Modifications:
Update docs to include references and links for contacting the RediStack maintainers for assistance.
Result:
Users should have more information on how to contact project maintainers.
Motivation:
To give a better first impression, and providing more comprehensive information for first time viewers, the README file needed reworking.
Modifications:
- Add a CHANGELOG file that at least redirects readers to the releases page of GitLab
- Update the CONTRIBUTORS list
- Change project README to have more information, flow better, and to have a better "first impression"
Result:
The README should give a stronger indication into the project's health.
Motivation:
During proposal review, and while working within the codebase, several issues were identified with how `RedisConnection` was architectured.
Modifications:
- Change implementation of `RedisConnection` in some areas for new logic of internal `ConnectionState`
- Change behavior of logging in a few places
- The initializer for `RedisConnection` is now **internal**
- How users can override the default `ClientBootstrap` for a connection is by passing an instance to the `.connect` static method
- Change unit tests to inherit from a common XCTestCase class that handles creation and cleanup of `RedisConnection` in tests
- Remove Redis namespace enum
Result:
The API for `RedisConnection` should be much simpler, with the implementation being less buggy.
This resolves issues #49, #54, and #57.
Motivation:
The default port for Redis is well published to be 6379, and it is common to want to pass this value around or use it as a static default value in methods and initializers.
Modifications:
Add `RedisConnection.defaultPort` static property for all users to use, and update references of the `6379` literals to use new the new property.
Result:
Users should have a reliable default defined to use everywhere to avoid bugs.
Motivation:
The emojis in the README were not rendered consistently in the docs and on different screen form factors making a poor UX.
Modifications:
The CI config now properly sends the custom theme to Jazzy, and the README no longer has the `🔔` emoji in the disclaimer header.
Result:
A consistent UX with the README and proper API docs referring to GitLab
Motivation:
After moving to GitLab, and while still having a GitHub mirror, it is important to drive people to the proper location for getting help and reporting bugs or feature requests.
Also, some information should be updated to include new tags, formatting, and a link to the new API docs.
Modifications:
README is updated to point users to the GitLab repository and to have up-to-date information about the project.
Result:
Users should know where to reach project maintainers and where to find documentation.
Motivation:
The SSWG has identified a fast approaching reality of namespace clashes in SPM within the ecosystem and has proposed a rule on names that `NIORedis` no longer complies with.
Modifications:
All references to `NIORedis` have been switched to `RedisNIO` as this module name is unique (at least within GitHub's public repositories).
The goals for this name are as follows:
1. To indicate that this is a Redis client library that is built with SwiftNIO
2. That it is a lower level library, as it directly exposes SwiftNIO as an implementation detail
2a. The idea being that a higher level library (`Redis`) will be used, and to "go one level deeper" in the stack, you append the "deeper" `NIO` postfix
3. It follows a naming pattern adopted by Vapor who has expressed their desire to adopt this library as their Redis implementation
Result:
A repository, package name, and module name that are unique across GitHub's public repositories that achives the goals outlined above.
Motivation:
The goal of the `Redis.makeConnection` factory method is to provide end users with a quick way to jump in and get started with Redis in Swift.
Right now, users have to provide an `EventLoopGroup` instance, when a reasonable default is available for us to define.
Modifications:
- Add: `MultiThreadedEventLoopGroup` for 1 thread as a default argument to the `using:` label in `Redis.makeConnection`
- Remove: The `with:` label for the password in `Redis.makeConnection`
- Change: The project README to reflect the current state of the project
Results:
Users should be able to create `RedisConnections` by just defining an IP Address & Port to connect to - and possibly a password.
In addition, the README should now properly direct users on how to use the latest version of the library.