cake icon indicating copy to clipboard operation
cake copied to clipboard

Show warning when Cake is out of date

Open jnm2 opened this issue 5 years ago • 5 comments

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.

jnm2 avatar Aug 30 '18 13:08 jnm2

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 avatar Oct 07 '21 08:10 sgrassie

@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

augustoproiete avatar Oct 07 '21 21:10 augustoproiete

Hey, is this still open for contribution?

mohamedtmismail avatar Feb 14 '23 05:02 mohamedtmismail

@secretMeedo Yes.

augustoproiete avatar Feb 14 '23 12:02 augustoproiete

@augustoproiete Thank you for the quick response, I'll have a look this weekend and let you know if I can do it.

mohamedtmismail avatar Feb 15 '23 22:02 mohamedtmismail