mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Colorify image compare command.
This commit is contained in:
@@ -698,10 +698,10 @@ In you are unsure, please press N to not continue.</value>
|
||||
<value>Second media image path</value>
|
||||
</data>
|
||||
<data name="Identifying_first_file_filter" xml:space="preserve">
|
||||
<value>Identifying file 1 filter...</value>
|
||||
<value>[slateblue1]Identifying file 1 filter...[/]</value>
|
||||
</data>
|
||||
<data name="Identifying_second_file_filter" xml:space="preserve">
|
||||
<value>Identifying file 2 filter...</value>
|
||||
<value>[slateblue1]Identifying file 2 filter...[/]</value>
|
||||
</data>
|
||||
<data name="Cannot_open_first_input_file" xml:space="preserve">
|
||||
<value>Cannot open input file 1</value>
|
||||
@@ -710,160 +710,160 @@ In you are unsure, please press N to not continue.</value>
|
||||
<value>Cannot open input file 2</value>
|
||||
</data>
|
||||
<data name="Identifying_first_image_format" xml:space="preserve">
|
||||
<value>Identifying image 1 format...</value>
|
||||
<value>[slateblue1]Identifying image 1 format...[/]</value>
|
||||
</data>
|
||||
<data name="Identifying_second_image_format" xml:space="preserve">
|
||||
<value>Identifying image 2 format...</value>
|
||||
<value>[slateblue1]Identifying image 2 format...[/]</value>
|
||||
</data>
|
||||
<data name="First_input_file_format_not_identified" xml:space="preserve">
|
||||
<value>Input file 1 format not identified, not proceeding with comparison.</value>
|
||||
</data>
|
||||
<data name="First_input_file_format_identified_by_0_1" xml:space="preserve">
|
||||
<value>Input file 1 format identified by {0} ({1}).</value>
|
||||
<value>[slateblue1]Input file 1 format identified by [fuchsia]{0}[/] ([rosybrown]{1}[/]).[/]</value>
|
||||
</data>
|
||||
<data name="First_input_file_format_identified_by_0" xml:space="preserve">
|
||||
<value>Input file 1 format identified by {0}.</value>
|
||||
<value>[slateblue1]Input file 1 format identified by [fuchsia]{0}[/].[/]</value>
|
||||
</data>
|
||||
<data name="Second_input_file_format_not_identified" xml:space="preserve">
|
||||
<value>Input file 2 format not identified, not proceeding with comparison.</value>
|
||||
</data>
|
||||
<data name="Second_input_file_format_identified_by_0_1" xml:space="preserve">
|
||||
<value>Input file 2 format identified by {0} ({1}).</value>
|
||||
<value>[slateblue1]Input file 2 format identified by [fuchsia]{0}[/] ([rosybrown]{1}[/]).[/]</value>
|
||||
</data>
|
||||
<data name="Second_input_file_format_identified_by_0" xml:space="preserve">
|
||||
<value>Input file 2 format identified by {0}.</value>
|
||||
<value>[slateblue1]Input file 2 format identified by [fuchsia]{0}[/].[/]</value>
|
||||
</data>
|
||||
<data name="Opening_first_image_file" xml:space="preserve">
|
||||
<value>Opening image 1 file...</value>
|
||||
<value>[slateblue1]Opening image 1 file...[/]</value>
|
||||
</data>
|
||||
<data name="Unable_to_open_first_image_format" xml:space="preserve">
|
||||
<value>Unable to open image 1 format</value>
|
||||
</data>
|
||||
<data name="Opening_second_image_file" xml:space="preserve">
|
||||
<value>Opening image 2 file...</value>
|
||||
<value>[slateblue1]Opening image 2 file...[/]</value>
|
||||
</data>
|
||||
<data name="Unable_to_open_second_image_format" xml:space="preserve">
|
||||
<value>Unable to open image 2 format</value>
|
||||
</data>
|
||||
<data name="Title_First_Media_image" xml:space="preserve">
|
||||
<value>Media image 1</value>
|
||||
<value>[green]Media image 1[/]</value>
|
||||
</data>
|
||||
<data name="Title_Second_Media_image" xml:space="preserve">
|
||||
<value>Media image 2</value>
|
||||
<value>[red]Media image 2[/]</value>
|
||||
</data>
|
||||
<data name="Title_File" xml:space="preserve">
|
||||
<value>File</value>
|
||||
<value>[slateblue1]File[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_image_format" xml:space="preserve">
|
||||
<value>Media image format</value>
|
||||
<value>[slateblue1]Media image format[/]</value>
|
||||
</data>
|
||||
<data name="Has_partitions_Question" xml:space="preserve">
|
||||
<value>Has partitions?</value>
|
||||
<value>[slateblue1]Has partitions?[/]</value>
|
||||
</data>
|
||||
<data name="Has_sessions_Question" xml:space="preserve">
|
||||
<value>Has sessions?</value>
|
||||
<value>[slateblue1]Has sessions?[/]</value>
|
||||
</data>
|
||||
<data name="Title_Image_size" xml:space="preserve">
|
||||
<value>Image size</value>
|
||||
<value>[slateblue1]Image size[/]</value>
|
||||
</data>
|
||||
<data name="Title_Sectors" xml:space="preserve">
|
||||
<value>Sectors</value>
|
||||
<value>[slateblue1]Sectors[/]</value>
|
||||
</data>
|
||||
<data name="Title_Sector_size" xml:space="preserve">
|
||||
<value>Sector size</value>
|
||||
<value>[slateblue1]Sector size[/]</value>
|
||||
</data>
|
||||
<data name="Title_Creation_time" xml:space="preserve">
|
||||
<value>Creation time</value>
|
||||
<value>[slateblue1]Creation time[/]</value>
|
||||
</data>
|
||||
<data name="Title_Last_modification_time" xml:space="preserve">
|
||||
<value>Last modification time</value>
|
||||
<value>[slateblue1]Last modification time[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_type" xml:space="preserve">
|
||||
<value>Media type</value>
|
||||
<value>[slateblue1]Media type[/]</value>
|
||||
</data>
|
||||
<data name="Title_Image_version" xml:space="preserve">
|
||||
<value>Image version</value>
|
||||
<value>[slateblue1]Image version[/]</value>
|
||||
</data>
|
||||
<data name="Title_Image_application" xml:space="preserve">
|
||||
<value>Image application</value>
|
||||
<value>[slateblue1]Image application[/]</value>
|
||||
</data>
|
||||
<data name="Title_Image_application_version" xml:space="preserve">
|
||||
<value>Image application version</value>
|
||||
<value>[slateblue1]Image application version[/]</value>
|
||||
</data>
|
||||
<data name="Title_Image_creator" xml:space="preserve">
|
||||
<value>Image creator</value>
|
||||
<value>[slateblue1]Image creator[/]</value>
|
||||
</data>
|
||||
<data name="Title_Image_name" xml:space="preserve">
|
||||
<value>Image name</value>
|
||||
<value>[slateblue1]Image name[/]</value>
|
||||
</data>
|
||||
<data name="Title_Image_comments" xml:space="preserve">
|
||||
<value>Image comments</value>
|
||||
<value>[slateblue1]Image comments[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_manufacturer" xml:space="preserve">
|
||||
<value>Media manufacturer</value>
|
||||
<value>[slateblue1]Media manufacturer[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_model" xml:space="preserve">
|
||||
<value>Media model</value>
|
||||
<value>[slateblue1]Media model[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_serial_number" xml:space="preserve">
|
||||
<value>Media serial number</value>
|
||||
<value>[slateblue1]Media serial number[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_barcode" xml:space="preserve">
|
||||
<value>Media barcode</value>
|
||||
<value>[slateblue1]Media barcode[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_part_number" xml:space="preserve">
|
||||
<value>Media part no.</value>
|
||||
<value>[slateblue1]Media part no.[/]</value>
|
||||
</data>
|
||||
<data name="Title_Media_sequence" xml:space="preserve">
|
||||
<value>Media sequence</value>
|
||||
<value>[slateblue1]Media sequence[/]</value>
|
||||
</data>
|
||||
<data name="Title_Last_media_on_sequence" xml:space="preserve">
|
||||
<value>Last media on sequence</value>
|
||||
<value>[slateblue1]Last media on sequence[/]</value>
|
||||
</data>
|
||||
<data name="Title_Drive_manufacturer" xml:space="preserve">
|
||||
<value>Drive manufacturer</value>
|
||||
<value>[slateblue1]Drive manufacturer[/]</value>
|
||||
</data>
|
||||
<data name="Title_Drive_firmware_revision" xml:space="preserve">
|
||||
<value>Drive firmware revision</value>
|
||||
<value>[slateblue1]Drive firmware revision[/]</value>
|
||||
</data>
|
||||
<data name="Title_Drive_model" xml:space="preserve">
|
||||
<value>Drive model</value>
|
||||
<value>[slateblue1]Drive model[/]</value>
|
||||
</data>
|
||||
<data name="Title_Drive_serial_number" xml:space="preserve">
|
||||
<value>Drive serial number</value>
|
||||
<value>[slateblue1]Drive serial number[/]</value>
|
||||
</data>
|
||||
<data name="Has_tag_0_Question" xml:space="preserve">
|
||||
<value>Has {0}?</value>
|
||||
<value>[slateblue1]Has [rosybrown]{0}[/]?[/]</value>
|
||||
</data>
|
||||
<data name="Comparing_media_image_characteristics" xml:space="preserve">
|
||||
<value>Comparing media image characteristics</value>
|
||||
</data>
|
||||
<data name="Image_partitioned_status_differ" xml:space="preserve">
|
||||
<value>Image partitioned status differ</value>
|
||||
<value>[red]Image partitioned status differ[/]</value>
|
||||
</data>
|
||||
<data name="Image_session_status_differ" xml:space="preserve">
|
||||
<value>Image session status differ</value>
|
||||
<value>[red]Image session status differ[/]</value>
|
||||
</data>
|
||||
<data name="Image_sectors_differ" xml:space="preserve">
|
||||
<value>Image sectors differ</value>
|
||||
<value>[red]Image sectors differ[/]</value>
|
||||
</data>
|
||||
<data name="Image_sector_size_differ" xml:space="preserve">
|
||||
<value>Image sector size differ</value>
|
||||
<value>[red]Image sector size differ[/]</value>
|
||||
</data>
|
||||
<data name="Media_type_differs" xml:space="preserve">
|
||||
<value>Media type differs</value>
|
||||
<value>[red]Media type differs[/]</value>
|
||||
</data>
|
||||
<data name="Second_image_has_more_sectors" xml:space="preserve">
|
||||
<value>Image 2 has more sectors</value>
|
||||
<value>[red]Image 2 has more sectors[/]</value>
|
||||
</data>
|
||||
<data name="First_image_has_more_sectors" xml:space="preserve">
|
||||
<value>Image 1 has more sectors</value>
|
||||
<value>[red]Image 1 has more sectors[/]</value>
|
||||
</data>
|
||||
<data name="Comparing_sectors" xml:space="preserve">
|
||||
<value>Comparing sectors...</value>
|
||||
</data>
|
||||
<data name="Comparing_sector_0_of_1" xml:space="preserve">
|
||||
<value>Comparing sector {0} of {1}...</value>
|
||||
<value>[slateblue1]Comparing sector [lime]{0}[/] of [violet]{1}[/]...[/]</value>
|
||||
</data>
|
||||
<data name="Error_0_reading_sector_1_from_first_image" xml:space="preserve">
|
||||
<value>Error {0} reading sector {1} from image 1.</value>
|
||||
@@ -875,10 +875,10 @@ In you are unsure, please press N to not continue.</value>
|
||||
<value>Comparing images...</value>
|
||||
</data>
|
||||
<data name="Images_differ" xml:space="preserve">
|
||||
<value>Images differ</value>
|
||||
<value>[red]Images differ[/]</value>
|
||||
</data>
|
||||
<data name="Images_do_not_differ" xml:space="preserve">
|
||||
<value>Images do not differ</value>
|
||||
<value>[green]Images do not differ[/]</value>
|
||||
</data>
|
||||
<data name="Take_metadata_from_existing_CICM_XML_sidecar" xml:space="preserve">
|
||||
<value>Take metadata from existing CICM XML sidecar.</value>
|
||||
|
||||
@@ -117,9 +117,7 @@ sealed class CompareCommand : Command<CompareCommand.Settings>
|
||||
|
||||
if(settings.Verbose)
|
||||
{
|
||||
AaruLogging.Verbose(UI.First_input_file_format_identified_by_0_1,
|
||||
input1Format.Name,
|
||||
input1Format.Id);
|
||||
AaruLogging.Verbose(UI.First_input_file_format_identified_by_0_1, input1Format.Name, input1Format.Id);
|
||||
}
|
||||
else
|
||||
AaruLogging.WriteLine(UI.First_input_file_format_identified_by_0, input1Format.Name);
|
||||
@@ -133,9 +131,7 @@ sealed class CompareCommand : Command<CompareCommand.Settings>
|
||||
|
||||
if(settings.Verbose)
|
||||
{
|
||||
AaruLogging.Verbose(UI.Second_input_file_format_identified_by_0_1,
|
||||
input2Format.Name,
|
||||
input2Format.Id);
|
||||
AaruLogging.Verbose(UI.Second_input_file_format_identified_by_0_1, input2Format.Name, input2Format.Id);
|
||||
}
|
||||
else
|
||||
AaruLogging.WriteLine(UI.Second_input_file_format_identified_by_0, input2Format.Name);
|
||||
@@ -181,19 +177,31 @@ sealed class CompareCommand : Command<CompareCommand.Settings>
|
||||
var sb = new StringBuilder();
|
||||
Table table = new();
|
||||
table.AddColumn("");
|
||||
table.AddColumn(UI.Title_First_Media_image);
|
||||
table.AddColumn(UI.Title_Second_Media_image);
|
||||
table.AddColumn(new TableColumn(new Markup(UI.Title_First_Media_image).Centered()));
|
||||
table.AddColumn(new TableColumn(new Markup(UI.Title_Second_Media_image).Centered()));
|
||||
table.Columns[0].RightAligned();
|
||||
table.Border(TableBorder.Rounded);
|
||||
table.BorderColor(Color.Yellow);
|
||||
|
||||
if(settings.Verbose)
|
||||
{
|
||||
table.AddRow(UI.Title_File, Markup.Escape(settings.ImagePath1), Markup.Escape(settings.ImagePath2));
|
||||
table.AddRow(UI.Title_Media_image_format, input1Format.Name, input2Format.Name);
|
||||
table.AddRow(UI.Title_File,
|
||||
$"[navy]{Markup.Escape(settings.ImagePath1)}[/]",
|
||||
$"[navy]{Markup.Escape(settings.ImagePath2)}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_image_format,
|
||||
$"[fuchsia]{input1Format.Name}[/]",
|
||||
$"[fuchsia]{input2Format.Name}[/]");
|
||||
}
|
||||
else
|
||||
{
|
||||
sb.AppendFormat($"[bold]{UI.Title_First_Media_image}:[/] {settings.ImagePath1}").AppendLine();
|
||||
sb.AppendFormat($"[bold]{UI.Title_Second_Media_image}:[/] {settings.ImagePath2}").AppendLine();
|
||||
sb
|
||||
.AppendFormat($"[bold][green]{UI.Title_First_Media_image}:[/] [italic]{Markup.Escape(settings.ImagePath1)}[/][/]")
|
||||
.AppendLine();
|
||||
|
||||
sb
|
||||
.AppendFormat($"[bold][red]{UI.Title_Second_Media_image}:[/] [italic]{Markup.Escape(settings.ImagePath2)}[/][/]")
|
||||
.AppendLine();
|
||||
}
|
||||
|
||||
bool imagesDiffer = false;
|
||||
@@ -201,8 +209,8 @@ sealed class CompareCommand : Command<CompareCommand.Settings>
|
||||
|
||||
ImageInfo image1Info = input1Format.Info;
|
||||
ImageInfo image2Info = input2Format.Info;
|
||||
Dictionary<MediaTagType, byte[]> image1DiskTags = new();
|
||||
Dictionary<MediaTagType, byte[]> image2DiskTags = new();
|
||||
Dictionary<MediaTagType, byte[]> image1DiskTags = [];
|
||||
Dictionary<MediaTagType, byte[]> image2DiskTags = [];
|
||||
var input1MediaImage = input1Format as IMediaImage;
|
||||
var input2MediaImage = input2Format as IMediaImage;
|
||||
|
||||
@@ -229,87 +237,119 @@ sealed class CompareCommand : Command<CompareCommand.Settings>
|
||||
if(settings.Verbose)
|
||||
{
|
||||
table.AddRow(UI.Has_partitions_Question,
|
||||
image1Info.HasPartitions.ToString(),
|
||||
image2Info.HasPartitions.ToString());
|
||||
image1Info.HasPartitions
|
||||
? $"[green]{image1Info.HasPartitions}[/]"
|
||||
: $"[red]{image1Info.HasPartitions}[/]",
|
||||
image2Info.HasPartitions
|
||||
? $"[green]{image2Info.HasPartitions}[/]"
|
||||
: $"[red]{image2Info.HasPartitions}[/]");
|
||||
|
||||
table.AddRow(UI.Has_sessions_Question,
|
||||
image1Info.HasSessions.ToString(),
|
||||
image2Info.HasSessions.ToString());
|
||||
image1Info.HasSessions
|
||||
? $"[green]{image1Info.HasSessions}[/]"
|
||||
: $"[red]{image1Info.HasSessions}[/]",
|
||||
image2Info.HasSessions
|
||||
? $"[green]{image2Info.HasSessions}[/]"
|
||||
: $"[red]{image2Info.HasSessions}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Image_size, image1Info.ImageSize.ToString(), image2Info.ImageSize.ToString());
|
||||
table.AddRow(UI.Title_Image_size, $"[teal]{image1Info.ImageSize}[/]", $"[teal]{image2Info.ImageSize}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Sectors, image1Info.Sectors.ToString(), image2Info.Sectors.ToString());
|
||||
table.AddRow(UI.Title_Sectors, $"[lime]{image1Info.Sectors}[/]", $"[lime]{image2Info.Sectors}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Sector_size, image1Info.SectorSize.ToString(), image2Info.SectorSize.ToString());
|
||||
table.AddRow(UI.Title_Sector_size,
|
||||
$"[aqua]{image1Info.SectorSize}[/]",
|
||||
$"[aqua]{image2Info.SectorSize}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Creation_time,
|
||||
image1Info.CreationTime.ToString(CultureInfo.CurrentCulture),
|
||||
image2Info.CreationTime.ToString(CultureInfo.CurrentCulture));
|
||||
$"[yellow3]{image1Info.CreationTime.ToString(CultureInfo.CurrentCulture)}[/]",
|
||||
$"[yellow3]{image2Info.CreationTime.ToString(CultureInfo.CurrentCulture)}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Last_modification_time,
|
||||
image1Info.LastModificationTime.ToString(CultureInfo.CurrentCulture),
|
||||
image2Info.LastModificationTime.ToString(CultureInfo.CurrentCulture));
|
||||
$"[yellow3]{image1Info.LastModificationTime.ToString(CultureInfo.CurrentCulture)}[/]",
|
||||
$"[yellow3]{image2Info.LastModificationTime.ToString(CultureInfo.CurrentCulture)}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_type, image1Info.MediaType.ToString(), image2Info.MediaType.ToString());
|
||||
table.AddRow(UI.Title_Media_type,
|
||||
$"[orange3]{image1Info.MediaType}[/]",
|
||||
$"[orange3]{image2Info.MediaType}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Image_version, image1Info.Version ?? "", image2Info.Version ?? "");
|
||||
table.AddRow(UI.Title_Image_version,
|
||||
$"[rosybrown]{image1Info.Version ?? ""}[/]",
|
||||
$"[rosybrown]{image2Info.Version ?? ""}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Image_application, image1Info.Application ?? "", image2Info.Application ?? "");
|
||||
table.AddRow(UI.Title_Image_application,
|
||||
$"[fuchsia]{image1Info.Application ?? ""}[/]",
|
||||
$"[fuchsia]{image2Info.Application ?? ""}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Image_application_version,
|
||||
image1Info.ApplicationVersion ?? "",
|
||||
image2Info.ApplicationVersion ?? "");
|
||||
$"[rosybrown]{image1Info.ApplicationVersion ?? ""}[/]",
|
||||
$"[rosybrown]{image2Info.ApplicationVersion ?? ""}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Image_creator, image1Info.Creator ?? "", image2Info.Creator ?? "");
|
||||
table.AddRow(UI.Title_Image_creator,
|
||||
$"[blue]{Markup.Escape(image1Info.Creator ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.Creator ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Image_name, image1Info.MediaTitle ?? "", image2Info.MediaTitle ?? "");
|
||||
table.AddRow(UI.Title_Image_name,
|
||||
$"[blue]{Markup.Escape(image1Info.MediaTitle ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.MediaTitle ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Image_comments, image1Info.Comments ?? "", image2Info.Comments ?? "");
|
||||
table.AddRow(UI.Title_Image_comments,
|
||||
$"[blue]{Markup.Escape(image1Info.Comments ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.Comments ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_manufacturer,
|
||||
image1Info.MediaManufacturer ?? "",
|
||||
image2Info.MediaManufacturer ?? "");
|
||||
$"[blue]{Markup.Escape(image1Info.MediaManufacturer ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.MediaManufacturer ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_model, image1Info.MediaModel ?? "", image2Info.MediaModel ?? "");
|
||||
table.AddRow(UI.Title_Media_model,
|
||||
$"[blue]{Markup.Escape(image1Info.MediaModel ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.MediaModel ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_serial_number,
|
||||
image1Info.MediaSerialNumber ?? "",
|
||||
image2Info.MediaSerialNumber ?? "");
|
||||
$"[blue]{Markup.Escape(image1Info.MediaSerialNumber ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.MediaSerialNumber ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_barcode, image1Info.MediaBarcode ?? "", image2Info.MediaBarcode ?? "");
|
||||
table.AddRow(UI.Title_Media_barcode,
|
||||
$"[blue]{Markup.Escape(image1Info.MediaBarcode ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.MediaBarcode ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_part_number,
|
||||
image1Info.MediaPartNumber ?? "",
|
||||
image2Info.MediaPartNumber ?? "");
|
||||
$"[blue]{Markup.Escape(image1Info.MediaPartNumber ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.MediaPartNumber ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Media_sequence,
|
||||
image1Info.MediaSequence.ToString(),
|
||||
image2Info.MediaSequence.ToString());
|
||||
$"[teal]{image1Info.MediaSequence}[/]",
|
||||
$"[teal]{image2Info.MediaSequence}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Last_media_on_sequence,
|
||||
image1Info.LastMediaSequence.ToString(),
|
||||
image2Info.LastMediaSequence.ToString());
|
||||
$"[teal]{image1Info.LastMediaSequence}[/]",
|
||||
$"[teal]{image2Info.LastMediaSequence}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Drive_manufacturer,
|
||||
image1Info.DriveManufacturer ?? "",
|
||||
image2Info.DriveManufacturer ?? "");
|
||||
$"[blue]{Markup.Escape(image1Info.DriveManufacturer ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.DriveManufacturer ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Drive_firmware_revision,
|
||||
image1Info.DriveFirmwareRevision ?? "",
|
||||
image2Info.DriveFirmwareRevision ?? "");
|
||||
$"[blue]{Markup.Escape(image1Info.DriveFirmwareRevision ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.DriveFirmwareRevision ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Drive_model, image1Info.DriveModel ?? "", image2Info.DriveModel ?? "");
|
||||
table.AddRow(UI.Title_Drive_model,
|
||||
$"[blue]{Markup.Escape(image1Info.DriveModel ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.DriveModel ?? "")}[/]");
|
||||
|
||||
table.AddRow(UI.Title_Drive_serial_number,
|
||||
image1Info.DriveSerialNumber ?? "",
|
||||
image2Info.DriveSerialNumber ?? "");
|
||||
$"[blue]{Markup.Escape(image1Info.DriveSerialNumber ?? "")}[/]",
|
||||
$"[blue]{Markup.Escape(image2Info.DriveSerialNumber ?? "")}[/]");
|
||||
|
||||
foreach(MediaTagType diskTag in
|
||||
(Enum.GetValues(typeof(MediaTagType)) as MediaTagType[]).OrderBy(e => e.ToString()))
|
||||
{
|
||||
table.AddRow(string.Format(UI.Has_tag_0_Question, diskTag),
|
||||
image1DiskTags.ContainsKey(diskTag).ToString(),
|
||||
image2DiskTags.ContainsKey(diskTag).ToString());
|
||||
image1DiskTags.ContainsKey(diskTag)
|
||||
? $"[green]{image1DiskTags.ContainsKey(diskTag)}[/]"
|
||||
: $"[red]{image1DiskTags.ContainsKey(diskTag)}[/]",
|
||||
image2DiskTags.ContainsKey(diskTag)
|
||||
? $"[green]{image2DiskTags.ContainsKey(diskTag)}[/]"
|
||||
: $"[red]{image2DiskTags.ContainsKey(diskTag)}[/]");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -405,20 +445,18 @@ sealed class CompareCommand : Command<CompareCommand.Settings>
|
||||
|
||||
if(errno != ErrorNumber.NoError)
|
||||
{
|
||||
AaruLogging
|
||||
.Error(string.Format(UI.Error_0_reading_sector_1_from_first_image,
|
||||
errno,
|
||||
sector));
|
||||
AaruLogging.Error(string.Format(UI.Error_0_reading_sector_1_from_first_image,
|
||||
errno,
|
||||
sector));
|
||||
}
|
||||
|
||||
errno = input2MediaImage.ReadSector(sector, out byte[] image2Sector);
|
||||
|
||||
if(errno != ErrorNumber.NoError)
|
||||
{
|
||||
AaruLogging
|
||||
.Error(string.Format(UI.Error_0_reading_sector_1_from_second_image,
|
||||
errno,
|
||||
sector));
|
||||
AaruLogging.Error(string.Format(UI.Error_0_reading_sector_1_from_second_image,
|
||||
errno,
|
||||
sector));
|
||||
}
|
||||
|
||||
ArrayHelpers.CompareBytes(out bool different,
|
||||
|
||||
@@ -314,7 +314,7 @@ class MainClass
|
||||
.WithAlias("chk")
|
||||
.WithDescription(UI.Image_Checksum_Command_Description);
|
||||
|
||||
image.AddCommand<CompareCommand>("compate")
|
||||
image.AddCommand<CompareCommand>("compare")
|
||||
.WithAlias("cmp")
|
||||
.WithDescription(UI.Image_Compare_Command_Description);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user