mirror of
https://github.com/velopack/velopack.git
synced 2025-10-25 15:19:22 +00:00
Show "out of date" warning at the beginning and end of build logs
This commit is contained in:
@@ -183,6 +183,8 @@ public static class ProgramCommandExtensions
|
||||
|
||||
try {
|
||||
await fn(options);
|
||||
// print the out of date warning again at the end as well.
|
||||
await updateCheck.CheckForUpdates();
|
||||
return 0;
|
||||
} catch (Exception ex) when (ex is ProcessFailedException or UserInfoException) {
|
||||
// some exceptions are just user info / user error, so don't need a stack trace.
|
||||
|
||||
@@ -1,35 +1,44 @@
|
||||
using System.Threading;
|
||||
using NuGet.Protocol.Core.Types;
|
||||
|
||||
namespace Velopack.Vpk.Updates;
|
||||
|
||||
public class UpdateChecker
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
private IPackageSearchMetadata _cache;
|
||||
|
||||
public UpdateChecker(ILogger logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public async Task CheckForUpdates()
|
||||
public async Task<bool> CheckForUpdates()
|
||||
{
|
||||
try {
|
||||
var cancel = new CancellationTokenSource(3000);
|
||||
var myVer = VelopackRuntimeInfo.VelopackNugetVersion;
|
||||
var dl = new NugetDownloader(new NullNugetLogger());
|
||||
var isPre = myVer.IsPrerelease || myVer.HasMetadata;
|
||||
var package = await dl.GetPackageMetadata("vpk", isPre ? "pre" : "latest", cancel.Token).ConfigureAwait(false);
|
||||
if (package.Identity.Version > myVer) {
|
||||
if (isPre) {
|
||||
_logger.Warn($"[bold underline]There is a newer version of vpk available ({package.Identity.Version}). Run 'dotnet tool update -g vpk'[/]");
|
||||
|
||||
if (_cache == null) {
|
||||
var cancel = new CancellationTokenSource(3000);
|
||||
var dl = new NugetDownloader(new NullNugetLogger());
|
||||
_cache = await dl.GetPackageMetadata("vpk", isPre ? "pre" : "latest", cancel.Token).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
var cacheVersion = _cache.Identity.Version;
|
||||
if (cacheVersion > myVer) {
|
||||
if (!isPre) {
|
||||
_logger.Warn($"[bold]There is a newer version of vpk available ({cacheVersion}). Run 'dotnet tool update -g vpk'[/]");
|
||||
} else {
|
||||
_logger.Warn($"[bold underline]There is a newer version of vpk available. Run 'dotnet tool update -g vpk --version {package.Identity.Version}'[/]");
|
||||
_logger.Warn($"[bold]There is a newer version of vpk available. Run 'dotnet tool update -g vpk --version {cacheVersion}'[/]");
|
||||
}
|
||||
return true;
|
||||
} else {
|
||||
_logger.Debug($"vpk is up to date (latest online = {package.Identity.Version})");
|
||||
_logger.Debug($"vpk is up to date (latest online = {cacheVersion})");
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
_logger.Debug(ex, "Failed to check for updates.");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user