add reftag commandline argument

This commit is contained in:
2025-04-21 20:50:16 +02:00
parent 70805083ba
commit 01fc5606cb
3 changed files with 17 additions and 10 deletions

View File

@@ -11,6 +11,7 @@ internal class Options
public bool Help { get; private set; } public bool Help { get; private set; }
public bool Silent { get; private set; } public bool Silent { get; private set; }
public bool NoUi { get; private set; } public bool NoUi { get; private set; }
public string RefTag { get; private set; }
public UpdateCheckOptionsAdv UpdateOptions { get; } = new(); public UpdateCheckOptionsAdv UpdateOptions { get; } = new();
public Options(string[] args) public Options(string[] args)
@@ -28,6 +29,7 @@ internal class Options
{ "m|maintenance", "Ignores the maintenance mode.", m => UpdateOptions.IgnoreMaintenance = true}, { "m|maintenance", "Ignores the maintenance mode.", m => UpdateOptions.IgnoreMaintenance = true},
{ "i|nonpublic", "Include non public (currently hidden) updates.", i => UpdateOptions.IncludeNonPublic = true}, { "i|nonpublic", "Include non public (currently hidden) updates.", i => UpdateOptions.IncludeNonPublic = true},
{ "k|key=", "An key for retriving extra files on updates.", k => UpdateOptions.ExtrasKey = k}, { "k|key=", "An key for retriving extra files on updates.", k => UpdateOptions.ExtrasKey = k},
{ "r|reftag=", "Force uses a specific version, if supported.", r => RefTag = r},
}; };
additionals.AddRange(options.Parse(args)); additionals.AddRange(options.Parse(args));

View File

@@ -48,17 +48,21 @@ public static class Extensions
return @this.SourceUrl.Replace("{version}", version.ToString(3)); return @this.SourceUrl.Replace("{version}", version.ToString(3));
} }
public static string GetInstallUrl(this ModpackConfig @this) public static string GetInstallUrl(this ModpackConfig @this, string? overwriteRefTag = null)
{ {
if (string.IsNullOrWhiteSpace(@this.RefTag)) if (!string.IsNullOrWhiteSpace(overwriteRefTag))
return @this.InstallUrl; return @this.InstallUrl.Replace("{ref}", overwriteRefTag);
return @this.InstallUrl.Replace("{ref}", @this.RefTag); if (!string.IsNullOrWhiteSpace(@this.RefTag))
return @this.InstallUrl.Replace("{ref}", @this.RefTag);
return @this.InstallUrl;
} }
public static string GetUpdateUrl(this ModpackConfig @this) public static string GetUpdateUrl(this ModpackConfig @this, string? overwriteRefTag = null)
{ {
if (string.IsNullOrWhiteSpace(@this.RefTag)) if (!string.IsNullOrWhiteSpace(overwriteRefTag))
return @this.UpdateUrl; return @this.UpdateUrl.Replace("{ref}", overwriteRefTag);
return @this.UpdateUrl.Replace("{ref}", @this.RefTag); if (!string.IsNullOrWhiteSpace(@this.RefTag))
return @this.UpdateUrl.Replace("{ref}", @this.RefTag);
return @this.UpdateUrl;
} }
} }

View File

@@ -21,6 +21,7 @@ public class ModpackInstaller(ModpackConfig updateConfig, ModpackInfo modpackInf
public delegate void CheckingProgressUpdatedEventHandler(int toCheck, int processed); public delegate void CheckingProgressUpdatedEventHandler(int toCheck, int processed);
public ILogger Log { get; set; } = NullLogger.Instance; public ILogger Log { get; set; } = NullLogger.Instance;
public string? OverwriteRefTag { get; set; }
private readonly HttpClient http = new(); private readonly HttpClient http = new();
private readonly ModpackFactory factory = new(); private readonly ModpackFactory factory = new();
@@ -32,13 +33,13 @@ public class ModpackInstaller(ModpackConfig updateConfig, ModpackInfo modpackInf
private async Task<UpdateInfos> DownloadUpdateInfos() private async Task<UpdateInfos> DownloadUpdateInfos()
{ {
var content = await http.GetStringAsync(updateConfig.GetUpdateUrl()); var content = await http.GetStringAsync(updateConfig.GetUpdateUrl(overwriteRefTag: OverwriteRefTag));
return UpdateInfos.Parse(content); return UpdateInfos.Parse(content);
} }
private async Task<InstallInfos> DownloadInstallInfos() private async Task<InstallInfos> DownloadInstallInfos()
{ {
var content = await http.GetStringAsync(updateConfig.GetInstallUrl()); var content = await http.GetStringAsync(updateConfig.GetInstallUrl(overwriteRefTag: OverwriteRefTag));
return InstallInfos.Parse(content); return InstallInfos.Parse(content);
} }