cake
cake copied to clipboard
Show warning when Cake is out of date
When you pin the Cake version which is a recommended practice, there's nothing to remind you when it is out of date. I've seen this result in folks working within the constraints of old versions of Cake without realizing there is new goodness available. If there was a warning shown at the end of each script execution, it would provide awareness to folks who aren't thinking about loading up the Cake website to check manually. Cake scripts in active projects would be less likely to stay behind at very old versions of Cake.
Could a warning be too strong? Information might be a better fit except that it might fail in its purpose of drawing attention during a normal script execution. On the other hand, there's occasionally a CVE associated with a new update.
Since the update check isn't mission-critical, it could be started asynchronously before compiling the script. If there is no network connectivity, the check can time out silently or be canceled silently when the script execution is finished.
There should be a configuration setting for folks to opt out.
I've been considering this. One approach could to be to write a small class (e.g. IRemoteVersionResolver
) to pull the release details from https://docs.github.com/en/rest/reference/repos#releases and add that as a dependency to VersionFeature
.
VersionFeature
already resolves the current local cake version and a comparison could be made to determine if Cake is out of date.
Of course, you might prefer the remote version check to be encapsulated in its own class, taking in the IVersionResolver
, a IRemoteVersionResolver
implementation as I mentioned above, and whichever object it is that holds the configuration settings so whether to actually perform the update check can be controller.
Thoughts?
@sgrassie At first glance seems like this needs to be its own separate feature that you start asynchronously as early as possible, without waiting/blocking the main thread, then after the build finished, check if the async call finished and make a decision:
- If the async call finished successfully, we have the remote version number, and it's higher, then display the warning (otherwise ignore)
- If the async call finished with errors, ignore
- If the async call is still running, abort it, and let the build finish normally
Hey, is this still open for contribution?
@secretMeedo Yes.
@augustoproiete Thank you for the quick response, I'll have a look this weekend and let you know if I can do it.