Skip to content

Commit

Permalink
Merge branches 'hotfix' and 'hotfix' of https://github.com/Corona-Stu…
Browse files Browse the repository at this point in the history
…dio/ProjBobcat into hotfix
  • Loading branch information
laolarou726 committed Feb 28, 2024
2 parents da94e31 + 11e926e commit 547b096
Show file tree
Hide file tree
Showing 5 changed files with 44 additions and 15 deletions.
2 changes: 1 addition & 1 deletion ProjBobcat/ProjBobcat/Class/Helper/GameVersionHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace ProjBobcat.Class.Helper;

public static partial class GameVersionHelper
{
[GeneratedRegex(@"1.\d{1,2}.\d{1,2}")]
[GeneratedRegex(@"1.\d{1,2}(.\d{1,2})*")]
private static partial Regex McVersionMatch();

public static string? TryGetMcVersion(List<RawVersionModel> versions)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using System.Collections.Frozen;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
Expand Down Expand Up @@ -55,7 +56,7 @@ public static List<Library> Replace(List<RawVersionModel> versions, List<Library
var versionsArr = mcVersion?.Split('.', StringSplitOptions.RemoveEmptyEntries);
var minor = -1;

if (versionsArr is { Length: 3 })
if (versionsArr is { Length: >= 2 })
{
minor = int.TryParse(versionsArr[1], out var outMinor) ? outMinor : -1;
}
Expand Down Expand Up @@ -99,7 +100,31 @@ public static List<Library> Replace(List<RawVersionModel> versions, List<Library
? $"{originalMaven.OrganizationName}:{originalMaven.ArtifactId}:{originalMaven.Version}:natives"
: original.Name;

replaced.Add(replaceDic.GetValueOrDefault(candidateKey, original));
if (!replaceDic.TryGetValue(candidateKey, out var candidate))
{
replaced.Add(original);
continue;
}

if (candidate == null)
{
replaced.Add(original);
continue;
}

if (candidate.Downloads?.Artifact != null &&
!(candidate.Downloads.Artifact.Url?.StartsWith("[X]", StringComparison.OrdinalIgnoreCase) ?? false))
candidate.Downloads.Artifact.Url = $"[X]{candidate.Downloads.Artifact.Url}";
if (candidate.Downloads?.Classifiers != null)
{
foreach (var (_, fi) in candidate.Downloads.Classifiers)
{
if (fi.Url?.StartsWith("[X]", StringComparison.OrdinalIgnoreCase) ?? false) continue;
fi.Url = $"[X]{fi.Url}";
}
}

replaced.Add(candidate);
}

return replaced;
Expand Down
22 changes: 11 additions & 11 deletions ProjBobcat/ProjBobcat/Class/Model/NativeReplaceModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,37 +6,37 @@ namespace ProjBobcat.Class.Model;
public class NativeReplaceModel
{
[JsonPropertyName("linux-arm64")]
public required IReadOnlyDictionary<string, Library> LinuxArm64 { get; init; }
public required IReadOnlyDictionary<string, Library?> LinuxArm64 { get; init; }

[JsonPropertyName("linux-arm32")]
public required IReadOnlyDictionary<string, Library> LinuxArm86 { get; init; }
public required IReadOnlyDictionary<string, Library?> LinuxArm86 { get; init; }

[JsonPropertyName("linux-mips64el")]
public required IReadOnlyDictionary<string, Library> LinuxMips64El { get; init; }
public required IReadOnlyDictionary<string, Library?> LinuxMips64El { get; init; }

[JsonPropertyName("linux-loongarch64")]
public required IReadOnlyDictionary<string, Library> LinuxLoongArch64 { get; init; }
public required IReadOnlyDictionary<string, Library?> LinuxLoongArch64 { get; init; }

[JsonPropertyName("linux-loongarch64_ow")]
public required IReadOnlyDictionary<string, Library> LinuxLoongArch64Ow { get; init; }
public required IReadOnlyDictionary<string, Library?> LinuxLoongArch64Ow { get; init; }

[JsonPropertyName("linux-riscv64")]
public required IReadOnlyDictionary<string, Library> LinuxRiscV64 { get; init; }
public required IReadOnlyDictionary<string, Library?> LinuxRiscV64 { get; init; }

[JsonPropertyName("windows-x86_64")]
public required IReadOnlyDictionary<string, Library> WindowsX64 { get; init; }
public required IReadOnlyDictionary<string, Library?> WindowsX64 { get; init; }

[JsonPropertyName("windows-x86")]
public required IReadOnlyDictionary<string, Library> WindowsX86 { get; init; }
public required IReadOnlyDictionary<string, Library?> WindowsX86 { get; init; }

[JsonPropertyName("windows-arm64")]
public required IReadOnlyDictionary<string, Library> WindowsArm64 { get; init; }
public required IReadOnlyDictionary<string, Library?> WindowsArm64 { get; init; }

[JsonPropertyName("osx-arm64")]
public required IReadOnlyDictionary<string, Library> OsxArm64 { get; init; }
public required IReadOnlyDictionary<string, Library?> OsxArm64 { get; init; }

[JsonPropertyName("freebsd-x86_64")]
public required IReadOnlyDictionary<string, Library> FreeBsdX64 { get; init; }
public required IReadOnlyDictionary<string, Library?> FreeBsdX64 { get; init; }
}

[JsonSerializable(typeof(NativeReplaceModel))]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,7 @@ private protected override (IEnumerable<string>, Dictionary<string, string>) Par
public override (List<NativeFileInfo>, List<FileInfo>) GetNatives(Library[] libraries)
{
var result = (new List<NativeFileInfo>(), new List<FileInfo>());

var isForge = libraries
.Any(l => l.Name.Contains("minecraftforge", StringComparison.OrdinalIgnoreCase));

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Security.Cryptography;
using System.Threading;
using ProjBobcat.Class.Helper;
using ProjBobcat.Class.Helper.NativeReplace;
using ProjBobcat.Class.Model;
using ProjBobcat.Class.Model.GameResource;
using ProjBobcat.Interface;
Expand Down Expand Up @@ -123,7 +124,9 @@ LibraryDownloadInfo GetDownloadFile(FileInfo lL)
Path = path,
Title = lL.Name?.Split(':')[1] ?? fileName,
Type = ResourceType.LibraryOrNative,
Url = uri,
Url = lL.Url?.StartsWith("[X]", StringComparison.OrdinalIgnoreCase) ?? false
? lL.Url["[X]".Length..]
: uri,
FileSize = lL.Size,
CheckSum = lL.Sha1,
FileName = fileName
Expand Down

0 comments on commit 547b096

Please sign in to comment.