Extraction fixes

This commit is contained in:
Timothy Baldridge 2020-07-27 21:30:25 -06:00
parent bc975c1840
commit 74c4360da9
5 changed files with 11 additions and 6 deletions

View File

@ -37,7 +37,7 @@ namespace Wabbajack.VirtualFileSystem
return false;
}
public Task<ExtractedFiles> ExtractAll(WorkQueue queue, IEnumerable<RelativePath> OnlyFiles)
public Task<ExtractedFiles> ExtractAll(WorkQueue queue, IEnumerable<RelativePath> OnlyFiles, bool throwOnError)
{
throw new Exception("BSAs can't contain archives");
}

View File

@ -33,9 +33,9 @@ namespace Wabbajack.VirtualFileSystem
return await FileExtractor.CanExtract(_path);
}
public Task<ExtractedFiles> ExtractAll(WorkQueue queue, IEnumerable<RelativePath> onlyFiles)
public Task<ExtractedFiles> ExtractAll(WorkQueue queue, IEnumerable<RelativePath> onlyFiles, bool throwOnError)
{
return FileExtractor.ExtractAll(queue, _path, onlyFiles);
return FileExtractor.ExtractAll(queue, _path, onlyFiles, throwOnError);
}
public async Task MoveTo(AbsolutePath path)

View File

@ -27,7 +27,7 @@ namespace Wabbajack.VirtualFileSystem
Definitions.FileType.RAR,
Definitions.FileType._7Z);
public static async Task<ExtractedFiles> ExtractAll(WorkQueue queue, AbsolutePath source, IEnumerable<RelativePath> OnlyFiles = null)
public static async Task<ExtractedFiles> ExtractAll(WorkQueue queue, AbsolutePath source, IEnumerable<RelativePath> OnlyFiles = null, bool throwOnError = true)
{
try
{
@ -35,6 +35,8 @@ namespace Wabbajack.VirtualFileSystem
if (source.Extension == Consts.OMOD)
return await ExtractAllWithOMOD(source);
Utils.Log($"Extracting {sig}");
switch (sig)
{
@ -53,6 +55,9 @@ namespace Wabbajack.VirtualFileSystem
}
catch (Exception ex)
{
if (!throwOnError)
return new ExtractedFiles(await TempFolder.Create());
Utils.ErrorThrow(ex, $"Error while extracting {source}");
throw new Exception();
}

View File

@ -16,7 +16,7 @@ namespace Wabbajack.VirtualFileSystem
public Task<bool> CanExtract();
public Task<ExtractedFiles> ExtractAll(WorkQueue queue, IEnumerable<RelativePath> Only = null);
public Task<ExtractedFiles> ExtractAll(WorkQueue queue, IEnumerable<RelativePath> Only = null, bool throwOnError = false);
public Task MoveTo(AbsolutePath path);

View File

@ -233,7 +233,7 @@ namespace Wabbajack.VirtualFileSystem
try
{
await using var extracted = await extractedFile.ExtractAll(context.Queue);
await using var extracted = await extractedFile.ExtractAll(context.Queue, throwOnError:false);
var list = await extracted
.PMap(context.Queue,