Skip to content

Commit 5f8f5a4

Browse files
committed
Bug fixes
1 parent 150c791 commit 5f8f5a4

File tree

5 files changed

+36
-17
lines changed

5 files changed

+36
-17
lines changed

src/UnturnedRedistUpdateTool/Program.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ private static async Task<int> Main(string[] args)
9696
var versionInfo = await versionTracker.LoadAsync();
9797

9898
var redistUpdater = new RedistUpdater(managedDirectory, redistPath);
99-
var updatedFiles = await redistUpdater.UpdateAsync();
99+
var (updatedFiles, manifests) = await redistUpdater.UpdateAsync();
100100
if (updatedFiles.Count == 0)
101101
{
102102
Console.WriteLine("No files were updated - either no changes or something went wrong.");
@@ -109,22 +109,23 @@ private static async Task<int> Main(string[] args)
109109
return 1;
110110
}
111111
Console.WriteLine($"{updatedFiles.Count} Unturned's file(s) were updated");
112-
var combinedHash = CreateCombinedHash(updatedFiles);
112+
var combinedHash = CreateCombinedHash(manifests);
113113
Console.WriteLine($"Combined hash of updated files: {combinedHash}");
114+
Console.WriteLine($"Old Combined hash of updated files: {versionInfo?.FilesHash}");
114115
var versionToUse = DetermineVersionToUse(newVersion, newBuildId, currentNuspecVersion, versionInfo, combinedHash, preview);
115116
Console.WriteLine($"New Version: {newVersion}");
116117
Console.WriteLine($"New Build Id: {newBuildId}");
117118
Console.WriteLine($"Version to use: {versionToUse}");
118119
if (versionToUse == currentNuspecVersion)
119120
{
120-
Console.WriteLine("Files haven't changed since last publish, skipping...");
121+
Console.WriteLine("Skip. nuspec and version to use are same.");
121122
return 0;
122123
}
123124
await versionTracker.SaveAsync(new VersionInfo
124125
{
125126
GameVersion = newVersion,
126127
BuildId = newBuildId,
127-
NugetVersion = versionToUse,
128+
NuGetVersion = versionToUse,
128129
FilesHash = combinedHash,
129130
LastUpdated = DateTime.UtcNow
130131
});
@@ -133,9 +134,12 @@ await versionTracker.SaveAsync(new VersionInfo
133134
nuspecHandler.Save();
134135

135136
Console.WriteLine($"Updated {updatedFiles.Count} File(s)");
136-
foreach (var (filePath, sha256) in updatedFiles)
137+
foreach (var (fromPath, toPath) in updatedFiles)
137138
{
138-
Console.WriteLine($"Updated File \"{filePath}\" (SHA256: {sha256[..8]}...)");
139+
var fileName = Path.GetFileName(toPath);
140+
if (!manifests.TryGetValue(fileName, out var sha256))
141+
continue;
142+
Console.WriteLine($"{fileName} (SHA256: {sha256[..8]}...)");
139143
}
140144

141145
await new CommitFileWriter().WriteAsync(unturnedPath, versionToUse, newBuildId, force);
@@ -174,13 +178,13 @@ string GetUnturnedDataDirectoryName()
174178
}
175179
}
176180

177-
private static string CreateCombinedHash(Dictionary<string, string> updatedFiles)
181+
private static string CreateCombinedHash(Dictionary<string, string> manifests)
178182
{
179-
var sortedFiles = updatedFiles.OrderBy(kvp => kvp.Key).ToList();
183+
var sortedFiles = manifests.OrderBy(kvp => kvp.Key).ToList();
180184
var combinedData = new StringBuilder();
181-
foreach (var (filePath, fileHash) in sortedFiles)
185+
foreach (var (fileName, fileHash) in sortedFiles)
182186
{
183-
combinedData.Append($"{Path.GetFileName(filePath)}:{fileHash}");
187+
combinedData.Append($"{fileName}:{fileHash}");
184188
}
185189
return Convert.ToHexString(SHA256.HashData(Encoding.UTF8.GetBytes(combinedData.ToString())));
186190
}

src/UnturnedRedistUpdateTool/RedistUpdater.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public RedistUpdater(string managedDir, string redistPath)
1414
_redistPath = redistPath;
1515
}
1616

17-
public async Task<Dictionary<string, string>> UpdateAsync()
17+
public async Task<(Dictionary<string, string> UpdatedFiles, Dictionary<string, string> Manifests)> UpdateAsync()
1818
{
1919
Dictionary<string, string> updatedFiles = [];
2020
Dictionary<string, string> manifest = [];
@@ -37,6 +37,6 @@ public async Task<Dictionary<string, string>> UpdateAsync()
3737
}
3838
var manifestPath = Path.Combine(_redistPath, "manifest.sha256.json");
3939
await File.WriteAllTextAsync(manifestPath, JsonSerializer.Serialize(manifest, ManifestJsonSerializerOptions));
40-
return updatedFiles;
40+
return (updatedFiles, manifest);
4141
}
4242
}

src/UnturnedRedistUpdateTool/UnturnedRedistUpdateTool.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<ItemGroup Condition=" $(Configuration) == 'Debug' ">
1414
<None Update="TempRedist\**\*.*">
15-
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
15+
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
1616
</None>
1717
</ItemGroup>
1818

src/UnturnedRedistUpdateTool/VersionTracker.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ public class VersionInfo
66
{
77
public string GameVersion { get; set; } = "";
88
public string BuildId { get; set; } = "";
9-
public string NugetVersion { get; set; } = "";
9+
public string NuGetVersion { get; set; } = "";
1010
public string FilesHash { get; set; } = "";
1111
public DateTime LastUpdated { get; set; }
1212
}

tests/UnturnedRedistUpdateTool.Tests/RedistUpdaterTests.cs

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,31 @@ public async Task ShouldCopyOnlyChangedFilesAndGenerateManifest()
1616
Directory.CreateDirectory(source);
1717
Directory.CreateDirectory(target);
1818

19+
// Create one changed file and one unchanged file
1920
File.WriteAllText(Path.Combine(source, "Test.dll"), "hello");
2021
File.WriteAllText(Path.Combine(target, "Test.dll"), "stale");
2122

23+
File.WriteAllText(Path.Combine(source, "Unchanged.dll"), "same");
24+
File.WriteAllText(Path.Combine(target, "Unchanged.dll"), "same");
25+
2226
var updater = new RedistUpdater(source, target);
23-
var updated = await updater.UpdateAsync();
27+
var (updated, manifests) = await updater.UpdateAsync();
2428

2529
updated.ShouldContainKey(Path.Combine(source, "Test.dll"));
30+
updated.ShouldNotContainKey(Path.Combine(source, "Unchanged.dll"));
31+
2632
File.ReadAllText(Path.Combine(target, "Test.dll")).ShouldBe("hello");
2733

28-
var manifest = File.ReadAllText(Path.Combine(target, "manifest.sha256.json"));
29-
manifest.ShouldContain("Test.dll");
34+
// Manifest checks
35+
manifests.ShouldContainKey("Test.dll");
36+
manifests.ShouldContainKey("Unchanged.dll");
37+
manifests.Count.ShouldBe(2);
38+
39+
var manifestPath = Path.Combine(target, "manifest.sha256.json");
40+
File.Exists(manifestPath).ShouldBeTrue();
41+
42+
var manifestContent = File.ReadAllText(manifestPath);
43+
manifestContent.ShouldContain("Test.dll");
44+
manifestContent.ShouldContain("Unchanged.dll");
3045
}
3146
}

0 commit comments

Comments
 (0)