diff --git a/Aaru.Checksums b/Aaru.Checksums index 6cf148e84..7e91888ac 160000 --- a/Aaru.Checksums +++ b/Aaru.Checksums @@ -1 +1 @@ -Subproject commit 6cf148e849f0dc13d92594b14b020e857e9a6082 +Subproject commit 7e91888acae87f64f858fc21eec8d4559f6af572 diff --git a/Aaru.CommonTypes b/Aaru.CommonTypes index 50e0b8071..d62669794 160000 --- a/Aaru.CommonTypes +++ b/Aaru.CommonTypes @@ -1 +1 @@ -Subproject commit 50e0b8071fb6898faae6ada7ee2a7938b7b62db5 +Subproject commit d62669794225537cecd9b74221863c23adc50a74 diff --git a/Aaru.Core/Filesystems.cs b/Aaru.Core/Filesystems.cs index 7ae910e6f..19bf326e3 100644 --- a/Aaru.Core/Filesystems.cs +++ b/Aaru.Core/Filesystems.cs @@ -51,7 +51,8 @@ public static class Filesystems public static void Identify(IMediaImage imagePlugin, out List idPlugins, Partition partition, bool getGuid = false) { - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; idPlugins = new List(); diff --git a/Aaru.Core/ImageFormat.cs b/Aaru.Core/ImageFormat.cs index 9f46d090d..9e69a66c5 100644 --- a/Aaru.Core/ImageFormat.cs +++ b/Aaru.Core/ImageFormat.cs @@ -31,6 +31,7 @@ // ****************************************************************************/ using System; +using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; using Aaru.Console; @@ -48,7 +49,8 @@ public static class ImageFormat { try { - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; IBaseImage imageFormat = null; diff --git a/Aaru.Core/Partitions.cs b/Aaru.Core/Partitions.cs index 014ff682c..11b898e3f 100644 --- a/Aaru.Core/Partitions.cs +++ b/Aaru.Core/Partitions.cs @@ -50,7 +50,8 @@ public static class Partitions /// List of found partitions public static List GetAll(IMediaImage image) { - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; List foundPartitions = new(); List childPartitions = new(); List checkedLocations = new(); diff --git a/Aaru.Core/PluginBase.cs b/Aaru.Core/PluginBase.cs index 86d7a0d0f..431aba800 100644 --- a/Aaru.Core/PluginBase.cs +++ b/Aaru.Core/PluginBase.cs @@ -30,173 +30,28 @@ // Copyright © 2011-2023 Natalia Portillo // ****************************************************************************/ -using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using System.Linq; +using Aaru.Checksums; +using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; -using Aaru.DiscImages; -using Microsoft.Extensions.DependencyInjection; namespace Aaru.Core; /// Plugin base operations [SuppressMessage("ReSharper", "UnusedMember.Global")] -public sealed class PluginBase +public static class PluginBase { - static PluginBase _instance; - - /// List of all archive formats - public readonly SortedDictionary Archives; - /// List of byte addressable image plugins - public readonly SortedDictionary ByteAddressableImages; - /// List of all filesystem plugins - public readonly SortedDictionary Filesystems; - /// List of filter plugins - public readonly SortedDictionary Filters; - /// List of floppy image plugins - public readonly SortedDictionary FloppyImages; - /// List of all media image plugins - public readonly SortedDictionary MediaImages; - /// List of all partition plugins - public readonly SortedDictionary Partitions; - /// List of read-only filesystem plugins - public readonly SortedDictionary ReadOnlyFilesystems; - /// List of writable floppy image plugins - public readonly SortedDictionary WritableFloppyImages; - /// List of writable media image plugins - public readonly SortedDictionary WritableImages; - IServiceProvider _serviceProvider; - IServiceCollection _services; - - PluginBase() + public static void Init() { - Filesystems = new SortedDictionary(); - ReadOnlyFilesystems = new SortedDictionary(); - Partitions = new SortedDictionary(); - MediaImages = new SortedDictionary(); - WritableImages = new SortedDictionary(); - Filters = new SortedDictionary(); - FloppyImages = new SortedDictionary(); - WritableFloppyImages = new SortedDictionary(); - Archives = new SortedDictionary(); - ByteAddressableImages = new SortedDictionary(); - } - - /// List of all checksums formats - public SortedDictionary Checksums - { - get + PluginRegister.Singleton.InitPlugins(new List { - SortedDictionary checksums = new(); - foreach(IChecksum plugin in _serviceProvider.GetServices()) - checksums.Add(plugin.Name.ToLower(), plugin); - - return checksums; - } - } - - /// Gets a singleton with all the known plugins - public static PluginBase Singleton - { - get - { - if(_instance != null) - return _instance; - - _instance = new PluginBase - { - _services = new ServiceCollection() - }; - - IPluginRegister imagesRegister = new Register(); - IPluginRegister filesystemsRegister = new Aaru.Filesystems.Register(); - IPluginRegister filtersRegister = new Filters.Register(); - IPluginRegister partitionsRegister = new Aaru.Partitions.Register(); - IPluginRegister archiveRegister = new Archives.Register(); - - _instance.AddPlugins(new Checksums.Register()); - _instance.AddPlugins(imagesRegister); - _instance.AddPlugins(filesystemsRegister); - _instance.AddPlugins(filtersRegister); - _instance.AddPlugins(partitionsRegister); - _instance.AddPlugins(archiveRegister); - - _instance._serviceProvider = _instance._services.BuildServiceProvider(); - - return _instance; - } - } - - /// Adds plugins to the central plugin register - /// Plugin register - void AddPlugins(IPluginRegister pluginRegister) - { - pluginRegister.RegisterChecksumPlugins(_services); - - foreach(Type type in pluginRegister.GetAllFilesystemPlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IFilesystem plugin && !Filesystems.ContainsKey(plugin.Name.ToLower())) - Filesystems.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllFilterPlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IFilter plugin && !Filters.ContainsKey(plugin.Name.ToLower())) - Filters.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllFloppyImagePlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IFloppyImage plugin && - !FloppyImages.ContainsKey(plugin.Name.ToLower())) - FloppyImages.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllMediaImagePlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IMediaImage plugin && !MediaImages.ContainsKey(plugin.Name.ToLower())) - MediaImages.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllPartitionPlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IPartition plugin && !Partitions.ContainsKey(plugin.Name.ToLower())) - Partitions.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllReadOnlyFilesystemPlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IReadOnlyFilesystem plugin && - !ReadOnlyFilesystems.ContainsKey(plugin.Name.ToLower())) - ReadOnlyFilesystems.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllWritableFloppyImagePlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IWritableFloppyImage plugin && - !WritableFloppyImages.ContainsKey(plugin.Name.ToLower())) - WritableFloppyImages.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllWritableImagePlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IBaseWritableImage plugin && - !WritableImages.ContainsKey(plugin.Name.ToLower())) - WritableImages.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllArchivePlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IArchive plugin && !Archives.ContainsKey(plugin.Name.ToLower())) - Archives.Add(plugin.Name.ToLower(), type); - } - - foreach(Type type in pluginRegister.GetAllByteAddressablePlugins() ?? Enumerable.Empty()) - { - if(Activator.CreateInstance(type) is IByteAddressableImage plugin && - !ByteAddressableImages.ContainsKey(plugin.Name.ToLower())) - ByteAddressableImages.Add(plugin.Name.ToLower(), type); - } + new Register(), + new Filters.Register(), + new DiscImages.Register(), + new Aaru.Filesystems.Register(), + new Aaru.Partitions.Register(), + new Archives.Register() + }); } } \ No newline at end of file diff --git a/Aaru.Core/Sidecar/AudioMedia.cs b/Aaru.Core/Sidecar/AudioMedia.cs index e77233c16..c92ba31fc 100644 --- a/Aaru.Core/Sidecar/AudioMedia.cs +++ b/Aaru.Core/Sidecar/AudioMedia.cs @@ -34,6 +34,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Text; +using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Interfaces; @@ -53,7 +54,7 @@ public sealed partial class Sidecar /// List of image checksums /// Metadata sidecar /// Encoding to be used for filesystem plugins - static void AudioMedia(IBaseImage image, Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, + static void AudioMedia(IBaseImage image, Guid filterId, string imagePath, FileInfo fi, PluginRegister plugins, List imgChecksums, ref Metadata sidecar, Encoding encoding) { diff --git a/Aaru.Core/Sidecar/BlockMedia.cs b/Aaru.Core/Sidecar/BlockMedia.cs index d5cb7f500..825944986 100644 --- a/Aaru.Core/Sidecar/BlockMedia.cs +++ b/Aaru.Core/Sidecar/BlockMedia.cs @@ -35,10 +35,10 @@ using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; +using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; -using Aaru.CommonTypes.Metadata; using Aaru.CommonTypes.Structs.Devices.ATA; using Aaru.Console; using Aaru.Decoders.PCMCIA; @@ -47,10 +47,9 @@ using Aaru.Filters; using Aaru.Helpers; using Directory = System.IO.Directory; using File = System.IO.File; +using MediaType = Aaru.CommonTypes.Metadata.MediaType; using Partition = Aaru.CommonTypes.Partition; -using Pcmcia = Aaru.CommonTypes.AaruMetadata.Pcmcia; using Tuple = Aaru.Decoders.PCMCIA.Tuple; -using Usb = Aaru.CommonTypes.AaruMetadata.Usb; namespace Aaru.Core; @@ -65,7 +64,7 @@ public sealed partial class Sidecar /// List of image checksums /// Metadata sidecar /// Encoding to be used for filesystem plugins - void BlockMedia(IMediaImage image, Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, + void BlockMedia(IMediaImage image, Guid filterId, string imagePath, FileInfo fi, PluginRegister plugins, List imgChecksums, ref Metadata sidecar, Encoding encoding) { if(_aborted) diff --git a/Aaru.Core/Sidecar/LinearMedia.cs b/Aaru.Core/Sidecar/LinearMedia.cs index df6b5d84f..6569090b6 100644 --- a/Aaru.Core/Sidecar/LinearMedia.cs +++ b/Aaru.Core/Sidecar/LinearMedia.cs @@ -34,6 +34,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Text; +using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Interfaces; @@ -54,7 +55,7 @@ public sealed partial class Sidecar /// Metadata sidecar /// Encoding to be used for filesystem plugins static void LinearMedia(IByteAddressableImage image, Guid filterId, string imagePath, FileInfo fi, - PluginBase plugins, List imgChecksums, + PluginRegister plugins, List imgChecksums, ref Metadata sidecar, Encoding encoding) => sidecar.LinearMedias = new List { new() diff --git a/Aaru.Core/Sidecar/OpticalDisc.cs b/Aaru.Core/Sidecar/OpticalDisc.cs index 2dabf6a04..a22902316 100644 --- a/Aaru.Core/Sidecar/OpticalDisc.cs +++ b/Aaru.Core/Sidecar/OpticalDisc.cs @@ -61,7 +61,7 @@ public sealed partial class Sidecar /// List of image checksums /// Metadata sidecar /// Encoding to be used for filesystem plugins - void OpticalDisc(IOpticalMediaImage image, Guid filterId, string imagePath, FileInfo fi, PluginBase plugins, + void OpticalDisc(IOpticalMediaImage image, Guid filterId, string imagePath, FileInfo fi, PluginRegister plugins, List imgChecksums, ref Metadata sidecar, Encoding encoding) { if(_aborted) diff --git a/Aaru.Core/Sidecar/Sidecar.cs b/Aaru.Core/Sidecar/Sidecar.cs index 615e80964..a55333d3f 100644 --- a/Aaru.Core/Sidecar/Sidecar.cs +++ b/Aaru.Core/Sidecar/Sidecar.cs @@ -34,6 +34,7 @@ using System; using System.Collections.Generic; using System.IO; using System.Text; +using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; @@ -52,7 +53,7 @@ public sealed partial class Sidecar readonly IBaseImage _image; readonly string _imagePath; readonly Checksum _imgChkWorker; - readonly PluginBase _plugins; + readonly PluginRegister _plugins; bool _aborted; FileStream _fs; Metadata _sidecar; @@ -60,7 +61,8 @@ public sealed partial class Sidecar /// Initializes a new instance of this class public Sidecar() { - _plugins = PluginBase.Singleton; + PluginBase.Init(); + _plugins = PluginRegister.Singleton; _imgChkWorker = new Checksum(); _aborted = false; @@ -75,12 +77,14 @@ public sealed partial class Sidecar /// Encoding for analysis public Sidecar(IBaseImage image, string imagePath, Guid filterId, Encoding encoding) { + PluginBase.Init(); + _image = image; _imagePath = imagePath; _filterId = filterId; _encoding = encoding; _sidecar = image.AaruMetadata ?? new Metadata(); - _plugins = PluginBase.Singleton; + _plugins = PluginRegister.Singleton; _fi = new FileInfo(imagePath); _fs = new FileStream(imagePath, FileMode.Open, FileAccess.Read); _imgChkWorker = new Checksum(); diff --git a/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs b/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs index 41bf7a560..9ee0429c7 100644 --- a/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs +++ b/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs @@ -34,6 +34,7 @@ using System; using System.Collections.ObjectModel; using System.Reactive; using System.Reflection; +using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; using Aaru.Core; using Aaru.Gui.Models; @@ -60,9 +61,10 @@ public sealed class PluginsViewModel : ViewModelBase FloppyImages = new ObservableCollection(); WritableFloppyImages = new ObservableCollection(); CloseCommand = ReactiveCommand.Create(ExecuteCloseCommand); + PluginBase.Init(); // TODO: Takes too much time - foreach(Type filterType in PluginBase.Singleton.Filters.Values) + foreach(Type filterType in PluginRegister.Singleton.Filters.Values) { if(Activator.CreateInstance(filterType) is not IFilter filter) continue; @@ -76,7 +78,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type imageType in PluginBase.Singleton.FloppyImages.Values) + foreach(Type imageType in PluginRegister.Singleton.FloppyImages.Values) { if(Activator.CreateInstance(imageType) is not IFloppyImage floppyImage) continue; @@ -90,7 +92,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type imageType in PluginBase.Singleton.MediaImages.Values) + foreach(Type imageType in PluginRegister.Singleton.MediaImages.Values) { if(Activator.CreateInstance(imageType) is not IMediaImage mediaImage) continue; @@ -104,7 +106,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type partitionType in PluginBase.Singleton.Partitions.Values) + foreach(Type partitionType in PluginRegister.Singleton.Partitions.Values) { if(Activator.CreateInstance(partitionType) is not IPartition partition) continue; @@ -118,7 +120,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type filesystem in PluginBase.Singleton.Filesystems.Values) + foreach(Type filesystem in PluginRegister.Singleton.Filesystems.Values) { if(Activator.CreateInstance(filesystem) is not IFilesystem fs) continue; @@ -132,7 +134,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type readOnlyFilesystem in PluginBase.Singleton.ReadOnlyFilesystems.Values) + foreach(Type readOnlyFilesystem in PluginRegister.Singleton.ReadOnlyFilesystems.Values) { if(Activator.CreateInstance(readOnlyFilesystem) is not IReadOnlyFilesystem fs) continue; @@ -146,7 +148,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type imageType in PluginBase.Singleton.WritableFloppyImages.Values) + foreach(Type imageType in PluginRegister.Singleton.WritableFloppyImages.Values) { if(Activator.CreateInstance(imageType) is not IWritableFloppyImage writableFloppyImage) continue; @@ -160,7 +162,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type baseWritableImageType in PluginBase.Singleton.WritableImages.Values) + foreach(Type baseWritableImageType in PluginRegister.Singleton.WritableImages.Values) { if(Activator.CreateInstance(baseWritableImageType) is not IWritableImage writableImage) continue; diff --git a/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs b/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs index 36c6d6537..af234b714 100644 --- a/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs @@ -41,6 +41,7 @@ using System.Text; using System.Text.Json; using System.Threading; using System.Threading.Tasks; +using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; @@ -172,7 +173,8 @@ public sealed class ImageConvertViewModel : ViewModelBase DriveSerialNumberVisible = !string.IsNullOrWhiteSpace(inputFormat.Info.DriveSerialNumber); DriveFirmwareRevisionVisible = !string.IsNullOrWhiteSpace(inputFormat.Info.DriveFirmwareRevision); - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; foreach(Type pluginType in plugins.WritableImages.Values) { @@ -1385,10 +1387,12 @@ public sealed class ImageConvertViewModel : ViewModelBase if(trackFlags.Count > 0) { foreach(KeyValuePair flags in trackFlags) + { outputOptical.WriteSectorTag(new[] { flags.Value }, flags.Key, SectorTagType.CdTrackFlags); + } } if(mcn != null) diff --git a/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs b/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs index 738e01394..2b0da802f 100644 --- a/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs @@ -609,7 +609,8 @@ public sealed class MainWindowViewModel : ViewModelBase var checkRaw = false; List idPlugins; Type pluginType; - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; if(partitions.Count == 0) { diff --git a/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs b/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs index c080ff2b0..6a4c7f36a 100644 --- a/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs @@ -42,6 +42,7 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using System.Xml.Serialization; +using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; @@ -167,7 +168,8 @@ public sealed class MediaDumpViewModel : ViewModelBase } } - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; foreach(Type pluginType in plugins.WritableImages.Values) { diff --git a/Aaru.Tests/Images/BlockMediaImageTest.cs b/Aaru.Tests/Images/BlockMediaImageTest.cs index b7a93ba80..d14158d84 100644 --- a/Aaru.Tests/Images/BlockMediaImageTest.cs +++ b/Aaru.Tests/Images/BlockMediaImageTest.cs @@ -135,7 +135,8 @@ public abstract class BlockMediaImageTest : BaseMediaImageTest public void Contents() { Environment.CurrentDirectory = DataFolder; - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; Assert.Multiple(() => { diff --git a/Aaru.Tests/Images/OpticalMediaImageTest.cs b/Aaru.Tests/Images/OpticalMediaImageTest.cs index 1bfbb8790..f76ed5ab9 100644 --- a/Aaru.Tests/Images/OpticalMediaImageTest.cs +++ b/Aaru.Tests/Images/OpticalMediaImageTest.cs @@ -199,8 +199,9 @@ public abstract class OpticalMediaImageTest : BaseMediaImageTest for(var i = 0; i < track.FileSystems.Length; i++) { - PluginBase plugins = PluginBase.Singleton; - bool found = plugins.Filesystems.TryGetValue(idPlugins[i], out Type pluginType); + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; + bool found = plugins.Filesystems.TryGetValue(idPlugins[i], out Type pluginType); // ReSharper disable once ConditionIsAlwaysTrueOrFalse // It is not the case, it changes diff --git a/Aaru.Tests/Issues/FsExtractHashIssueTest.cs b/Aaru.Tests/Issues/FsExtractHashIssueTest.cs index d54c08ac2..99abdb6ac 100644 --- a/Aaru.Tests/Issues/FsExtractHashIssueTest.cs +++ b/Aaru.Tests/Issues/FsExtractHashIssueTest.cs @@ -46,7 +46,8 @@ public abstract class FsExtractHashIssueTest if(Encoding != null) encodingClass = Claunia.Encoding.Encoding.GetEncoding(Encoding); - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; var imageFormat = ImageFormat.Detect(inputFilter) as IMediaImage; diff --git a/Aaru.Tests/Issues/FsExtractIssueTest.cs b/Aaru.Tests/Issues/FsExtractIssueTest.cs index 8bc542d0c..b1bfe4c48 100644 --- a/Aaru.Tests/Issues/FsExtractIssueTest.cs +++ b/Aaru.Tests/Issues/FsExtractIssueTest.cs @@ -40,7 +40,8 @@ public abstract class FsExtractIssueTest if(Encoding != null) encodingClass = Claunia.Encoding.Encoding.GetEncoding(Encoding); - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; var imageFormat = ImageFormat.Detect(inputFilter) as IMediaImage; diff --git a/Aaru/Commands/Filesystem/ExtractFiles.cs b/Aaru/Commands/Filesystem/ExtractFiles.cs index 01e4ca75e..fcc0ad676 100644 --- a/Aaru/Commands/Filesystem/ExtractFiles.cs +++ b/Aaru/Commands/Filesystem/ExtractFiles.cs @@ -179,7 +179,8 @@ sealed class ExtractFilesCommand : Command } } - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; try { diff --git a/Aaru/Commands/Filesystem/Info.cs b/Aaru/Commands/Filesystem/Info.cs index 38729a933..11e43b5bc 100644 --- a/Aaru/Commands/Filesystem/Info.cs +++ b/Aaru/Commands/Filesystem/Info.cs @@ -154,7 +154,8 @@ sealed class FilesystemInfoCommand : Command } } - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; var checkRaw = false; diff --git a/Aaru/Commands/Filesystem/Ls.cs b/Aaru/Commands/Filesystem/Ls.cs index 2cc29ae89..f5a38d3d4 100644 --- a/Aaru/Commands/Filesystem/Ls.cs +++ b/Aaru/Commands/Filesystem/Ls.cs @@ -168,7 +168,8 @@ sealed class LsCommand : Command } } - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; try { diff --git a/Aaru/Commands/Filesystem/Options.cs b/Aaru/Commands/Filesystem/Options.cs index 382da6db0..cfb70060c 100644 --- a/Aaru/Commands/Filesystem/Options.cs +++ b/Aaru/Commands/Filesystem/Options.cs @@ -35,6 +35,7 @@ using System.Collections.Generic; using System.CommandLine; using System.CommandLine.NamingConventionBinder; using System.Linq; +using Aaru.CommonTypes; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; using Aaru.Console; @@ -87,7 +88,8 @@ sealed class ListOptionsCommand : Command AaruConsole.DebugWriteLine(MODULE_NAME, "--verbose={0}", verbose); Statistics.AddCommand("list-options"); - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; AaruConsole.WriteLine(UI.Read_only_filesystems_options); diff --git a/Aaru/Commands/Formats.cs b/Aaru/Commands/Formats.cs index 2de5b6886..d36d8991b 100644 --- a/Aaru/Commands/Formats.cs +++ b/Aaru/Commands/Formats.cs @@ -88,8 +88,9 @@ sealed class FormatsCommand : Command AaruConsole.DebugWriteLine(MODULE_NAME, "--debug={0}", debug); AaruConsole.DebugWriteLine(MODULE_NAME, "--verbose={0}", verbose); - PluginBase plugins = PluginBase.Singleton; - var filtersList = new FiltersList(); + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; + var filtersList = new FiltersList(); Table table = new() { diff --git a/Aaru/Commands/Image/Convert.cs b/Aaru/Commands/Image/Convert.cs index 099a440cc..af29d08ed 100644 --- a/Aaru/Commands/Image/Convert.cs +++ b/Aaru/Commands/Image/Convert.cs @@ -449,9 +449,10 @@ sealed class ConvertImageCommand : Command return (int)ErrorNumber.FileExists; } - PluginBase plugins = PluginBase.Singleton; - IMediaImage inputFormat = null; - IBaseImage baseImage = null; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; + IMediaImage inputFormat = null; + IBaseImage baseImage = null; Core.Spectre.ProgressSingleSpinner(ctx => { diff --git a/Aaru/Commands/Image/Options.cs b/Aaru/Commands/Image/Options.cs index 3f1fcdbd3..9eca06b8a 100644 --- a/Aaru/Commands/Image/Options.cs +++ b/Aaru/Commands/Image/Options.cs @@ -35,6 +35,7 @@ using System.Collections.Generic; using System.CommandLine; using System.CommandLine.NamingConventionBinder; using System.Linq; +using Aaru.CommonTypes; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; using Aaru.Console; @@ -87,7 +88,8 @@ sealed class ListOptionsCommand : Command AaruConsole.DebugWriteLine(MODULE_NAME, "--verbose={0}", verbose); Statistics.AddCommand("list-options"); - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; AaruConsole.WriteLine(UI.Read_Write_media_images_options); diff --git a/Aaru/Commands/ListNamespaces.cs b/Aaru/Commands/ListNamespaces.cs index 3bed6e342..4ed6c2777 100644 --- a/Aaru/Commands/ListNamespaces.cs +++ b/Aaru/Commands/ListNamespaces.cs @@ -35,6 +35,7 @@ using System.Collections.Generic; using System.CommandLine; using System.CommandLine.NamingConventionBinder; using System.Linq; +using Aaru.CommonTypes; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; using Aaru.Console; @@ -86,7 +87,8 @@ sealed class ListNamespacesCommand : Command AaruConsole.DebugWriteLine(MODULE_NAME, "--verbose={0}", verbose); Statistics.AddCommand("list-namespaces"); - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; foreach(KeyValuePair kvp in plugins.ReadOnlyFilesystems) { diff --git a/Aaru/Commands/Media/Dump.cs b/Aaru/Commands/Media/Dump.cs index 607c60c07..c1ef26724 100644 --- a/Aaru/Commands/Media/Dump.cs +++ b/Aaru/Commands/Media/Dump.cs @@ -42,6 +42,7 @@ using System.Text; using System.Text.Json; using System.Threading; using System.Xml.Serialization; +using Aaru.CommonTypes; using Aaru.CommonTypes.AaruMetadata; using Aaru.CommonTypes.Enums; using Aaru.CommonTypes.Interfaces; @@ -369,7 +370,8 @@ sealed class DumpMediaCommand : Command if(isResponse) eject = true; - PluginBase plugins = PluginBase.Singleton; + PluginBase.Init(); + PluginRegister plugins = PluginRegister.Singleton; List candidates = new(); string extension = Path.GetExtension(outputPath); @@ -638,7 +640,7 @@ sealed class DumpMediaCommand : Command } } - plugins = PluginBase.Singleton; + plugins = PluginRegister.Singleton; candidates = new List(); // Try extension