From 9d79aa7381bec7f27a04ef212bca0af1794f7cec Mon Sep 17 00:00:00 2001 From: erri120 Date: Sat, 9 Jan 2021 19:44:59 +0100 Subject: [PATCH] Fix Wabbajack.CLI --- Wabbajack.CLI/Verbs/ChangeDownload.cs | 2 ++ Wabbajack.CLI/Verbs/ForceHealing.cs | 10 ++++++++-- Wabbajack.CLI/Verbs/HashFile.cs | 7 ++++++- Wabbajack.CLI/Verbs/HashGameFiles.cs | 9 +++++---- 4 files changed, 21 insertions(+), 7 deletions(-) diff --git a/Wabbajack.CLI/Verbs/ChangeDownload.cs b/Wabbajack.CLI/Verbs/ChangeDownload.cs index 9e1e5fc1..c353efad 100644 --- a/Wabbajack.CLI/Verbs/ChangeDownload.cs +++ b/Wabbajack.CLI/Verbs/ChangeDownload.cs @@ -139,6 +139,8 @@ namespace Wabbajack.CLI.Verbs CLIUtils.Log($"Hashing {f}"); return (f, await f.FileHashCachedAsync()); })) + .Where(x => x.Item2.HasValue) + .Select(x => (x.f, x.Item2!.Value)) .GroupBy(d => d.Item2) .ToDictionary(d => d.Key, d => d.First().f); diff --git a/Wabbajack.CLI/Verbs/ForceHealing.cs b/Wabbajack.CLI/Verbs/ForceHealing.cs index 574347c9..26526428 100644 --- a/Wabbajack.CLI/Verbs/ForceHealing.cs +++ b/Wabbajack.CLI/Verbs/ForceHealing.cs @@ -28,8 +28,14 @@ namespace Wabbajack.CLI.Verbs var oldHash = await Old.FileHashCachedAsync(); var newHash = await New.FileHashCachedAsync(); - var oldArchive = new Archive(oldState) {Hash = oldHash, Size = Old.Size}; - var newArchive = new Archive(newState) {Hash = newHash, Size = New.Size}; + if (oldHash == null) + return ExitCode.Error; + + if (newHash == null) + return ExitCode.Error; + + var oldArchive = new Archive(oldState) {Hash = oldHash!.Value, Size = Old.Size}; + var newArchive = new Archive(newState) {Hash = newHash!.Value, Size = New.Size}; Utils.Log($"Contacting Server to request patch ({oldHash} -> {newHash}"); Utils.Log($"Response: {await ClientAPI.GetModUpgrade(oldArchive, newArchive, useAuthor: true)}"); diff --git a/Wabbajack.CLI/Verbs/HashFile.cs b/Wabbajack.CLI/Verbs/HashFile.cs index 7e54fa9f..aa58b739 100644 --- a/Wabbajack.CLI/Verbs/HashFile.cs +++ b/Wabbajack.CLI/Verbs/HashFile.cs @@ -16,7 +16,12 @@ namespace Wabbajack.CLI.Verbs { var abs = (AbsolutePath)Input; var hash = await abs.FileHashAsync(); - Console.WriteLine($"{abs} hash: {hash} {hash.ToHex()} {(long)hash}"); + if (hash == null) + { + Console.WriteLine("Hash is null!"); + return ExitCode.Error; + } + Console.WriteLine($"{abs} hash: {hash} {hash.Value.ToHex()} {(long)hash}"); return ExitCode.Ok; } } diff --git a/Wabbajack.CLI/Verbs/HashGameFiles.cs b/Wabbajack.CLI/Verbs/HashGameFiles.cs index 096bd1be..0aa61159 100644 --- a/Wabbajack.CLI/Verbs/HashGameFiles.cs +++ b/Wabbajack.CLI/Verbs/HashGameFiles.cs @@ -31,25 +31,26 @@ namespace Wabbajack.CLI.Verbs Utils.Log($"Hashing files for {_game} {version}"); - var indexed = await gameLocation + var indexed = (await gameLocation .EnumerateFiles() .PMap(queue, async f => { var hash = await f.FileHashCachedAsync(); + if (hash == null) return null; return new Archive(new GameFileSourceDownloader.State { Game = _game, GameFile = f.RelativeTo(gameLocation), - Hash = hash, + Hash = hash.Value, GameVersion = version }) { Name = f.FileName.ToString(), - Hash = hash, + Hash = hash.Value, Size = f.Size }; - }); + })).NotNull().ToArray(); Utils.Log($"Found and hashed {indexed.Length} files"); await indexed.ToJsonAsync(file, prettyPrint: true);