add latest release version check

This commit is contained in:
IsWaffle 2023-08-12 10:51:45 -04:00
parent d64595e2f9
commit 95b6e5147d
7 changed files with 45 additions and 16 deletions

View File

@ -5,8 +5,8 @@
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<AssemblyVersion>1.3.8</AssemblyVersion>
<FileVersion>1.3.8</FileVersion>
<AssemblyVersion>1.3.9</AssemblyVersion>
<FileVersion>1.3.9</FileVersion>
</PropertyGroup>
<ItemGroup>

View File

@ -75,14 +75,20 @@ namespace EftPatchHelper.Helpers
}
}
public EftClient GetClientSelection(string Prompt)
public EftClient GetClientSelection(string Prompt, string currentReleaseVersion = "")
{
SelectionPrompt<EftClient> clientPrompt = new SelectionPrompt<EftClient>()
{
Title = Prompt,
MoreChoicesText = "Move cursor to see more versions",
PageSize = 10,
Converter = (x) => x.DisplayName
Converter = (x) =>
{
if (!string.IsNullOrWhiteSpace(currentReleaseVersion) && x.Version.EndsWith(currentReleaseVersion))
return $"{x.DisplayName} - Latest Release";
return x.DisplayName;
}
};
clientPrompt.AddChoices(_clientList);

View File

@ -66,8 +66,6 @@ namespace EftPatchHelper.Tasks
ctx.Refresh();
}
});
AnsiConsole.Write(new Rule());
}
public void Run()

View File

@ -2,6 +2,7 @@
using EftPatchHelper.Helpers;
using EftPatchHelper.Interfaces;
using EftPatchHelper.Model;
using Gitea.Api;
using Spectre.Console;
namespace EftPatchHelper.Tasks
@ -19,9 +20,9 @@ namespace EftPatchHelper.Tasks
_clientSelector = clientSelector;
}
private bool ChangeSettingsTargetVersion()
private bool ChangeSettingsTargetVersion(string currentReleaseVersion)
{
_options.TargetClient = _clientSelector.GetClientSelection("Select [yellow]Target[/] Version");
_options.TargetClient = _clientSelector.GetClientSelection("Select [yellow]Target[/] Version", currentReleaseVersion);
AnsiConsole.WriteLine();
ConfirmationPrompt changeVersion = new ConfirmationPrompt($"Update settings target version to use [purple]{_options.TargetClient.Version}[/]?");
@ -36,13 +37,13 @@ namespace EftPatchHelper.Tasks
return true;
}
private bool ConfirmExistingTargetVersion()
private bool ConfirmExistingTargetVersion(string currentReleaseVersion)
{
_clientSelector.LoadClientList();
_options.TargetClient = _clientSelector.GetClient(_settings.TargetEftVersion);
ConfirmationPrompt confirmTarget = new ConfirmationPrompt($"Use version [purple]{_settings.TargetEftVersion}[/] as target?");
ConfirmationPrompt confirmTarget = new ConfirmationPrompt($"Use version [purple]{_settings.TargetEftVersion}[/] {(_options.TargetClient.Version.EndsWith(currentReleaseVersion) ? " ([green]latest release[/])" : "")} as target?");
// If client is null or requested change, return false to ensure change settings target is called.
return _options.TargetClient == null || !confirmTarget.Show(AnsiConsole.Console);
@ -55,11 +56,33 @@ namespace EftPatchHelper.Tasks
return _options.SourceClient != null;
}
private string GetCurrentReleaseVersion()
{
if (!_settings.UsingGitea())
return "";
return AnsiConsole.Status().Start("Starting...", ctx =>
{
RepositoryApi repo = new RepositoryApi();
ctx.Spinner = Spinner.Known.Dots8;
ctx.Status = "Getting latest release ...";
var releases = repo.RepoListReleases("SPT-AKI", "Stable-releases");
var release = releases.First(x => !x.Prerelease).Name.Split('(')[1];
return release.Remove(release.Length - 1);
});
}
public void Run()
{
if (ConfirmExistingTargetVersion())
var currentReleaseVersion = GetCurrentReleaseVersion();
if (ConfirmExistingTargetVersion(currentReleaseVersion))
{
ChangeSettingsTargetVersion().ValidateOrExit();
ChangeSettingsTargetVersion(currentReleaseVersion).ValidateOrExit();
}
SelectSourceVersion().ValidateOrExit();

View File

@ -105,10 +105,6 @@ namespace EftPatchHelper.Tasks
if (!_options.CreateRelease) return;
Configuration.Default.BasePath = _settings.GiteaApiBasePath;
Configuration.Default.AddApiKey("token", _settings.GiteaApiKey);
var repo = new RepositoryApi(Configuration.Default);
var release = MakeRelease(repo).ValidateOrExit<Release>();

View File

@ -44,6 +44,8 @@ namespace EftPatchHelper.Tasks
public void Run()
{
AnsiConsole.Write(new Rule("Starting Tasks, this will take some time :)"));
BackupClients().ValidateOrExit();
CopyData(_options.SourceClient, "[gray]Copying[/] [blue]source[/][gray] to prep area ...[/]").ValidateOrExit();

View File

@ -1,6 +1,7 @@
using EftPatchHelper.Extensions;
using EftPatchHelper.Interfaces;
using EftPatchHelper.Model;
using Gitea.Client;
using Spectre.Console;
namespace EftPatchHelper.Tasks
@ -64,6 +65,9 @@ namespace EftPatchHelper.Tasks
if (_settings.UsingGitea())
{
Configuration.Default.BasePath = _settings.GiteaApiBasePath;
Configuration.Default.AddApiKey("token", _settings.GiteaApiKey);
_options.CreateRelease = new ConfirmationPrompt("Create a release on gitea?").Show(AnsiConsole.Console);
}