add maintenance mode & improve & bugfixing
This commit is contained in:
@@ -1,8 +1,15 @@
|
||||
namespace ModpackUpdater.Manager;
|
||||
using ModpackUpdater.Model;
|
||||
|
||||
namespace ModpackUpdater.Manager;
|
||||
|
||||
|
||||
public static class Extensions
|
||||
{
|
||||
public static bool IsSide(this Side @this, Side side)
|
||||
{
|
||||
return @this.HasFlag(side) || side.HasFlag(@this);
|
||||
}
|
||||
|
||||
|
||||
public static void CopyDirectory(string sourceDir, string destinationDir, bool recursive)
|
||||
{
|
||||
|
||||
@@ -37,32 +37,38 @@ public class ModpackInstaller(ModpackConfig updateConfig, string localPath)
|
||||
return InstallInfos.Parse(content);
|
||||
}
|
||||
|
||||
public Task<UpdateCheckResult> Check()
|
||||
{
|
||||
return Check(Side.Client, true);
|
||||
}
|
||||
|
||||
public async Task<UpdateCheckResult> Check(Side side, bool allowUpdaterAfterInstall)
|
||||
public async Task<UpdateCheckResult> Check(UpdateCheckOptions options)
|
||||
{
|
||||
var result = new UpdateCheckResult();
|
||||
var hasConfig = ModpackInfo.HasModpackInfo(localPath);
|
||||
InstallInfos installInfos = null;
|
||||
UpdateInfos updateInfos = null;
|
||||
|
||||
if (updateConfig.Maintenance && !options.IgnoreMaintenance)
|
||||
{
|
||||
result.IsInMaintenance = true;
|
||||
return result;
|
||||
}
|
||||
|
||||
if (!hasConfig)
|
||||
{
|
||||
installInfos = await DownloadInstallInfos();
|
||||
|
||||
if (installInfos is not null && installInfos.Actions.Count != 0)
|
||||
{
|
||||
result.Actions.AddRange(installInfos.Actions);
|
||||
result.LatestVersion = installInfos.Version;
|
||||
var actions = installInfos.Actions.Where(n => n.Side.IsSide(options.Side));
|
||||
if (actions.Any())
|
||||
{
|
||||
result.Actions.AddRange(installInfos.Actions);
|
||||
result.LatestVersion = installInfos.Version;
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
if (result.Actions.Count == 0)
|
||||
result.HasError = true;
|
||||
}
|
||||
|
||||
if (allowUpdaterAfterInstall)
|
||||
if (options.AllowUpdaterAfterInstall)
|
||||
{
|
||||
updateInfos = await DownloadUpdateInfos();
|
||||
var modpackInfo = ModpackInfo.HasModpackInfo(localPath) ? ModpackInfo.Load(localPath) : new();
|
||||
@@ -83,7 +89,7 @@ public class ModpackInstaller(ModpackConfig updateConfig, string localPath)
|
||||
|
||||
foreach (var action in checkingVersion.Actions)
|
||||
{
|
||||
if (!result.Actions.Any(n => n.DestPath == action.DestPath))
|
||||
if (action.Side.IsSide(options.Side) && !result.Actions.Any(n => n.DestPath == action.DestPath))
|
||||
actionsToAdd.Add(action);
|
||||
}
|
||||
|
||||
|
||||
10
ModpackUpdater.Manager/UpdateCheckOptions.cs
Normal file
10
ModpackUpdater.Manager/UpdateCheckOptions.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using ModpackUpdater.Model;
|
||||
|
||||
namespace ModpackUpdater.Manager;
|
||||
|
||||
public class UpdateCheckOptions
|
||||
{
|
||||
public bool IgnoreMaintenance { get; set; }
|
||||
public bool AllowUpdaterAfterInstall { get; set; } = true;
|
||||
public Side Side { get; set; } = Side.Client;
|
||||
}
|
||||
@@ -9,5 +9,6 @@ public class UpdateCheckResult
|
||||
public List<InstallAction> Actions { get; private set; } = [];
|
||||
public bool IsInstalled { get; set; }
|
||||
public bool HasError { get; set; }
|
||||
public bool IsInMaintenance { get; set; }
|
||||
public bool HasUpdates => !IsInstalled || CurrentVersion < LatestVersion;
|
||||
}
|
||||
Reference in New Issue
Block a user