mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Use Spectre for image decode command.
This commit is contained in:
@@ -40,6 +40,7 @@ using Aaru.Core;
|
||||
using Aaru.Decoders.ATA;
|
||||
using Aaru.Decoders.CD;
|
||||
using Aaru.Decoders.SCSI;
|
||||
using Spectre.Console;
|
||||
|
||||
namespace Aaru.Commands.Image
|
||||
{
|
||||
@@ -99,10 +100,29 @@ namespace Aaru.Commands.Image
|
||||
MainClass.PrintCopyright();
|
||||
|
||||
if(debug)
|
||||
AaruConsole.DebugWriteLineEvent += System.Console.Error.WriteLine;
|
||||
{
|
||||
IAnsiConsole stderrConsole = AnsiConsole.Create(new AnsiConsoleSettings
|
||||
{
|
||||
Out = new AnsiConsoleOutput(System.Console.Error)
|
||||
});
|
||||
|
||||
AaruConsole.DebugWriteLineEvent += (format, objects) =>
|
||||
{
|
||||
if(objects is null)
|
||||
stderrConsole.MarkupLine(format);
|
||||
else
|
||||
stderrConsole.MarkupLine(format, objects);
|
||||
};
|
||||
}
|
||||
|
||||
if(verbose)
|
||||
AaruConsole.VerboseWriteLineEvent += System.Console.WriteLine;
|
||||
AaruConsole.WriteEvent += (format, objects) =>
|
||||
{
|
||||
if(objects is null)
|
||||
AnsiConsole.Markup(format);
|
||||
else
|
||||
AnsiConsole.Markup(format, objects);
|
||||
};
|
||||
|
||||
Statistics.AddCommand("decode");
|
||||
|
||||
@@ -115,7 +135,13 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.DebugWriteLine("Decode command", "--verbose={0}", verbose);
|
||||
|
||||
var filtersList = new FiltersList();
|
||||
IFilter inputFilter = filtersList.GetFilter(imagePath);
|
||||
IFilter inputFilter = null;
|
||||
|
||||
Core.Spectre.ProgressSingleSpinner(ctx =>
|
||||
{
|
||||
ctx.AddTask("Identifying file filter...").IsIndeterminate();
|
||||
inputFilter = filtersList.GetFilter(imagePath);
|
||||
});
|
||||
|
||||
if(inputFilter == null)
|
||||
{
|
||||
@@ -124,7 +150,13 @@ namespace Aaru.Commands.Image
|
||||
return (int)ErrorNumber.CannotOpenFile;
|
||||
}
|
||||
|
||||
IMediaImage inputFormat = ImageFormat.Detect(inputFilter);
|
||||
IMediaImage inputFormat = null;
|
||||
|
||||
Core.Spectre.ProgressSingleSpinner(ctx =>
|
||||
{
|
||||
ctx.AddTask("Identifying image format...").IsIndeterminate();
|
||||
inputFormat = ImageFormat.Detect(inputFilter);
|
||||
});
|
||||
|
||||
if(inputFormat == null)
|
||||
{
|
||||
@@ -133,7 +165,22 @@ namespace Aaru.Commands.Image
|
||||
return (int)ErrorNumber.UnrecognizedFormat;
|
||||
}
|
||||
|
||||
inputFormat.Open(inputFilter);
|
||||
bool opened = false;
|
||||
|
||||
Core.Spectre.ProgressSingleSpinner(ctx =>
|
||||
{
|
||||
ctx.AddTask("Opening image file...").IsIndeterminate();
|
||||
opened = inputFormat.Open(inputFilter);
|
||||
});
|
||||
|
||||
if(!opened)
|
||||
{
|
||||
AaruConsole.WriteLine("Unable to open image format");
|
||||
AaruConsole.WriteLine("No error given");
|
||||
|
||||
return (int)ErrorNumber.CannotOpenFormat;
|
||||
}
|
||||
|
||||
Statistics.AddMediaFormat(inputFormat.Format);
|
||||
Statistics.AddMedia(inputFormat.Info.MediaType, false);
|
||||
Statistics.AddFilter(inputFilter.Name);
|
||||
@@ -153,7 +200,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading SCSI INQUIRY response from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("SCSI INQUIRY command response:");
|
||||
AaruConsole.WriteLine("[bold]SCSI INQUIRY command response:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -174,7 +221,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading ATA IDENTIFY DEVICE response from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("ATA IDENTIFY DEVICE command response:");
|
||||
AaruConsole.WriteLine("[bold]ATA IDENTIFY DEVICE command response:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -196,7 +243,7 @@ namespace Aaru.Commands.Image
|
||||
WriteLine("Error reading ATA IDENTIFY PACKET DEVICE response from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("ATA IDENTIFY PACKET DEVICE command response:");
|
||||
AaruConsole.WriteLine("[bold]ATA IDENTIFY PACKET DEVICE command response:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -217,7 +264,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading CD ATIP from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("CD ATIP:");
|
||||
AaruConsole.WriteLine("[bold]CD ATIP:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -238,7 +285,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading CD full TOC from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("CD full TOC:");
|
||||
AaruConsole.WriteLine("[bold]CD full TOC:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -259,7 +306,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading CD PMA from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("CD PMA:");
|
||||
AaruConsole.WriteLine("[bold]CD PMA:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -280,7 +327,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading CD session information from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("CD session information:");
|
||||
AaruConsole.WriteLine("[bold]CD session information:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -301,7 +348,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading CD-TEXT from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("CD-TEXT:");
|
||||
AaruConsole.WriteLine("[bold]CD-TEXT:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
@@ -322,7 +369,7 @@ namespace Aaru.Commands.Image
|
||||
AaruConsole.WriteLine("Error reading CD TOC from disc image");
|
||||
else
|
||||
{
|
||||
AaruConsole.WriteLine("CD TOC:");
|
||||
AaruConsole.WriteLine("[bold]CD TOC:[/]");
|
||||
|
||||
AaruConsole.
|
||||
WriteLine("================================================================================");
|
||||
|
||||
Reference in New Issue
Block a user