diff --git a/Aaru.CommonTypes b/Aaru.CommonTypes index d603dca1a..b2afea72c 160000 --- a/Aaru.CommonTypes +++ b/Aaru.CommonTypes @@ -1 +1 @@ -Subproject commit d603dca1ad8f1ab82243dba982e7d3244b8f1259 +Subproject commit b2afea72c84124e0ae4a5b729163a9825c515f6e diff --git a/Aaru.Core/Filesystems.cs b/Aaru.Core/Filesystems.cs index f91758c77..6d2dcd9f4 100644 --- a/Aaru.Core/Filesystems.cs +++ b/Aaru.Core/Filesystems.cs @@ -51,7 +51,7 @@ public static class Filesystems public static void Identify(IMediaImage imagePlugin, out List idPlugins, Partition partition, bool getGuid = false) { - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; idPlugins = new List(); diff --git a/Aaru.Core/GetPluginBase.cs b/Aaru.Core/GetPluginBase.cs deleted file mode 100644 index 9fd203a91..000000000 --- a/Aaru.Core/GetPluginBase.cs +++ /dev/null @@ -1,66 +0,0 @@ -// /*************************************************************************** -// Aaru Data Preservation Suite -// ---------------------------------------------------------------------------- -// -// Filename : ImageFormat.cs -// Author(s) : Natalia Portillo -// -// Component : Core algorithms. -// -// --[ Description ] ---------------------------------------------------------- -// -// Gets a new instance of all known plugins. -// -// --[ License ] -------------------------------------------------------------- -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . -// -// ---------------------------------------------------------------------------- -// Copyright © 2011-2023 Natalia Portillo -// ****************************************************************************/ - -using Aaru.Checksums; -using Aaru.CommonTypes; -using Aaru.CommonTypes.Interfaces; - -namespace Aaru.Core; - -/// Plugin base operations -public static class GetPluginBase -{ - /// Gets an instance with all the known plugins - public static PluginBase Instance - { - get - { - var instance = new PluginBase(); - - IPluginRegister checksumRegister = new Register(); - IPluginRegister imagesRegister = new DiscImages.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(checksumRegister); - instance.AddPlugins(imagesRegister); - instance.AddPlugins(filesystemsRegister); - instance.AddPlugins(filtersRegister); - instance.AddPlugins(partitionsRegister); - instance.AddPlugins(archiveRegister); - - return instance; - } - } -} \ No newline at end of file diff --git a/Aaru.Core/ImageFormat.cs b/Aaru.Core/ImageFormat.cs index 7bf88d868..223e36e98 100644 --- a/Aaru.Core/ImageFormat.cs +++ b/Aaru.Core/ImageFormat.cs @@ -31,7 +31,6 @@ // ****************************************************************************/ using System; -using Aaru.CommonTypes; using Aaru.CommonTypes.Interfaces; using Aaru.Console; @@ -47,7 +46,7 @@ public static class ImageFormat { try { - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; IBaseImage imageFormat = null; diff --git a/Aaru.Core/Partitions.cs b/Aaru.Core/Partitions.cs index 9380e5ee8..b70ca8342 100644 --- a/Aaru.Core/Partitions.cs +++ b/Aaru.Core/Partitions.cs @@ -48,7 +48,7 @@ public static class Partitions /// List of found partitions public static List GetAll(IMediaImage image) { - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; List foundPartitions = new(); List childPartitions = new(); List checkedLocations = new(); diff --git a/Aaru.Core/PluginBase.cs b/Aaru.Core/PluginBase.cs new file mode 100644 index 000000000..0ce286276 --- /dev/null +++ b/Aaru.Core/PluginBase.cs @@ -0,0 +1,163 @@ +// /*************************************************************************** +// Aaru Data Preservation Suite +// ---------------------------------------------------------------------------- +// +// Filename : PluginBase.cs +// Author(s) : Natalia Portillo +// +// Component : Core algorithms. +// +// --[ Description ] ---------------------------------------------------------- +// +// Gets lists of all known plugins. +// +// --[ License ] -------------------------------------------------------------- +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as +// published by the Free Software Foundation, either version 3 of the +// License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// +// ---------------------------------------------------------------------------- +// Copyright © 2011-2023 Natalia Portillo +// ****************************************************************************/ + +using System; +using System.Collections.Generic; +using System.Linq; +using Aaru.Checksums; +using Aaru.CommonTypes.Interfaces; + +namespace Aaru.Core; + +/// Plugin base operations +public sealed 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; + + PluginBase() + { + 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(); + } + + /// Gets a singleton with all the known plugins + public static PluginBase Singleton + { + get + { + if(_instance != null) + return _instance; + + _instance = new PluginBase(); + + IPluginRegister checksumRegister = new Register(); + IPluginRegister imagesRegister = new DiscImages.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(checksumRegister); + _instance.AddPlugins(imagesRegister); + _instance.AddPlugins(filesystemsRegister); + _instance.AddPlugins(filtersRegister); + _instance.AddPlugins(partitionsRegister); + _instance.AddPlugins(archiveRegister); + + return _instance; + } + } + + /// Adds plugins to the central plugin register + /// Plugin register + void AddPlugins(IPluginRegister pluginRegister) + { + 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); + } +} \ No newline at end of file diff --git a/Aaru.Core/Sidecar/Sidecar.cs b/Aaru.Core/Sidecar/Sidecar.cs index 6b076a0db..3e14078a7 100644 --- a/Aaru.Core/Sidecar/Sidecar.cs +++ b/Aaru.Core/Sidecar/Sidecar.cs @@ -34,7 +34,6 @@ 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; @@ -60,7 +59,7 @@ public sealed partial class Sidecar /// Initializes a new instance of this class public Sidecar() { - _plugins = GetPluginBase.Instance; + _plugins = PluginBase.Singleton; _imgChkWorker = new Checksum(); _aborted = false; @@ -80,7 +79,7 @@ public sealed partial class Sidecar _filterId = filterId; _encoding = encoding; _sidecar = image.AaruMetadata ?? new Metadata(); - _plugins = GetPluginBase.Instance; + _plugins = PluginBase.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 f5d67ed68..3a699a353 100644 --- a/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs +++ b/Aaru.Gui/ViewModels/Dialogs/PluginsViewModel.cs @@ -62,7 +62,7 @@ public sealed class PluginsViewModel : ViewModelBase CloseCommand = ReactiveCommand.Create(ExecuteCloseCommand); // TODO: Takes too much time - foreach(Type filterType in GetPluginBase.Instance.Filters.Values) + foreach(Type filterType in PluginBase.Singleton.Filters.Values) { if(Activator.CreateInstance(filterType) is not IFilter filter) continue; @@ -76,7 +76,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type imageType in GetPluginBase.Instance.FloppyImages.Values) + foreach(Type imageType in PluginBase.Singleton.FloppyImages.Values) { if(Activator.CreateInstance(imageType) is not IFloppyImage floppyImage) continue; @@ -90,7 +90,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type imageType in GetPluginBase.Instance.MediaImages.Values) + foreach(Type imageType in PluginBase.Singleton.MediaImages.Values) { if(Activator.CreateInstance(imageType) is not IMediaImage mediaImage) continue; @@ -104,7 +104,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type partitionType in GetPluginBase.Instance.Partitions.Values) + foreach(Type partitionType in PluginBase.Singleton.Partitions.Values) { if(Activator.CreateInstance(partitionType) is not IPartition partition) continue; @@ -118,7 +118,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type filesystem in GetPluginBase.Instance.Filesystems.Values) + foreach(Type filesystem in PluginBase.Singleton.Filesystems.Values) { if(Activator.CreateInstance(filesystem) is not IFilesystem fs) continue; @@ -132,7 +132,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type readOnlyFilesystem in GetPluginBase.Instance.ReadOnlyFilesystems.Values) + foreach(Type readOnlyFilesystem in PluginBase.Singleton.ReadOnlyFilesystems.Values) { if(Activator.CreateInstance(readOnlyFilesystem) is not IReadOnlyFilesystem fs) continue; @@ -146,7 +146,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type imageType in GetPluginBase.Instance.WritableFloppyImages.Values) + foreach(Type imageType in PluginBase.Singleton.WritableFloppyImages.Values) { if(Activator.CreateInstance(imageType) is not IWritableFloppyImage writableFloppyImage) continue; @@ -160,7 +160,7 @@ public sealed class PluginsViewModel : ViewModelBase }); } - foreach(Type baseWritableImageType in GetPluginBase.Instance.WritableImages.Values) + foreach(Type baseWritableImageType in PluginBase.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 81faefee0..0ac14756a 100644 --- a/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/ImageConvertViewModel.cs @@ -41,7 +41,6 @@ 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; @@ -200,7 +199,7 @@ public sealed class ImageConvertViewModel : ViewModelBase DriveSerialNumberVisible = !string.IsNullOrWhiteSpace(inputFormat.Info.DriveSerialNumber); DriveFirmwareRevisionVisible = !string.IsNullOrWhiteSpace(inputFormat.Info.DriveFirmwareRevision); - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; foreach(Type pluginType in plugins.WritableImages.Values) { diff --git a/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs b/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs index 8371ae5ae..496e2e6fb 100644 --- a/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/MainWindowViewModel.cs @@ -594,7 +594,7 @@ public sealed class MainWindowViewModel : ViewModelBase bool checkRaw = false; List idPlugins; Type pluginType; - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; if(partitions.Count == 0) { diff --git a/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs b/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs index 66f165282..0a6ee582e 100644 --- a/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs +++ b/Aaru.Gui/ViewModels/Windows/MediaDumpViewModel.cs @@ -42,7 +42,6 @@ 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; @@ -166,7 +165,7 @@ public sealed class MediaDumpViewModel : ViewModelBase break; } - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; foreach(Type pluginType in plugins.WritableImages.Values) { diff --git a/Aaru.Tests/Images/BlockMediaImageTest.cs b/Aaru.Tests/Images/BlockMediaImageTest.cs index 46bcd333a..1047ec774 100644 --- a/Aaru.Tests/Images/BlockMediaImageTest.cs +++ b/Aaru.Tests/Images/BlockMediaImageTest.cs @@ -133,7 +133,7 @@ public abstract class BlockMediaImageTest : BaseMediaImageTest public void Contents() { Environment.CurrentDirectory = DataFolder; - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; Assert.Multiple(() => { diff --git a/Aaru.Tests/Images/OpticalMediaImageTest.cs b/Aaru.Tests/Images/OpticalMediaImageTest.cs index 2afcc7818..d5adbc661 100644 --- a/Aaru.Tests/Images/OpticalMediaImageTest.cs +++ b/Aaru.Tests/Images/OpticalMediaImageTest.cs @@ -187,7 +187,7 @@ public abstract class OpticalMediaImageTest : BaseMediaImageTest for(int i = 0; i < track.FileSystems.Length; i++) { - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; bool found = plugins.Filesystems.TryGetValue(idPlugins[i], out Type pluginType); // ReSharper disable once ConditionIsAlwaysTrueOrFalse diff --git a/Aaru.Tests/Issues/FsExtractHashIssueTest.cs b/Aaru.Tests/Issues/FsExtractHashIssueTest.cs index 69f742de8..c9a77a0d1 100644 --- a/Aaru.Tests/Issues/FsExtractHashIssueTest.cs +++ b/Aaru.Tests/Issues/FsExtractHashIssueTest.cs @@ -46,7 +46,7 @@ public abstract class FsExtractHashIssueTest if(Encoding != null) encodingClass = Claunia.Encoding.Encoding.GetEncoding(Encoding); - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; var imageFormat = ImageFormat.Detect(inputFilter) as IMediaImage; diff --git a/Aaru.Tests/Issues/FsExtractIssueTest.cs b/Aaru.Tests/Issues/FsExtractIssueTest.cs index 0f27e86b0..f505c532a 100644 --- a/Aaru.Tests/Issues/FsExtractIssueTest.cs +++ b/Aaru.Tests/Issues/FsExtractIssueTest.cs @@ -40,7 +40,7 @@ public abstract class FsExtractIssueTest if(Encoding != null) encodingClass = Claunia.Encoding.Encoding.GetEncoding(Encoding); - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; var imageFormat = ImageFormat.Detect(inputFilter) as IMediaImage; diff --git a/Aaru/Commands/Filesystem/ExtractFiles.cs b/Aaru/Commands/Filesystem/ExtractFiles.cs index 8acd05537..c711ef031 100644 --- a/Aaru/Commands/Filesystem/ExtractFiles.cs +++ b/Aaru/Commands/Filesystem/ExtractFiles.cs @@ -174,7 +174,7 @@ sealed class ExtractFilesCommand : Command return (int)ErrorNumber.EncodingUnknown; } - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; try { diff --git a/Aaru/Commands/Filesystem/Info.cs b/Aaru/Commands/Filesystem/Info.cs index bac675d6f..eec02605d 100644 --- a/Aaru/Commands/Filesystem/Info.cs +++ b/Aaru/Commands/Filesystem/Info.cs @@ -146,7 +146,7 @@ sealed class FilesystemInfoCommand : Command return (int)ErrorNumber.EncodingUnknown; } - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; bool checkRaw = false; diff --git a/Aaru/Commands/Filesystem/Ls.cs b/Aaru/Commands/Filesystem/Ls.cs index 594c6012c..006523960 100644 --- a/Aaru/Commands/Filesystem/Ls.cs +++ b/Aaru/Commands/Filesystem/Ls.cs @@ -162,7 +162,7 @@ sealed class LsCommand : Command return (int)ErrorNumber.EncodingUnknown; } - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; try { diff --git a/Aaru/Commands/Filesystem/Options.cs b/Aaru/Commands/Filesystem/Options.cs index d26fb9fbf..59de7cced 100644 --- a/Aaru/Commands/Filesystem/Options.cs +++ b/Aaru/Commands/Filesystem/Options.cs @@ -35,7 +35,6 @@ 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; @@ -84,7 +83,7 @@ sealed class ListOptionsCommand : Command AaruConsole.DebugWriteLine("List-Options command", "--verbose={0}", verbose); Statistics.AddCommand("list-options"); - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; AaruConsole.WriteLine(UI.Read_only_filesystems_options); diff --git a/Aaru/Commands/Formats.cs b/Aaru/Commands/Formats.cs index ff087ba4b..cf811a8cf 100644 --- a/Aaru/Commands/Formats.cs +++ b/Aaru/Commands/Formats.cs @@ -84,7 +84,7 @@ sealed class FormatsCommand : Command AaruConsole.DebugWriteLine("Formats command", "--debug={0}", debug); AaruConsole.DebugWriteLine("Formats command", "--verbose={0}", verbose); - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; var filtersList = new FiltersList(); Table table = new() diff --git a/Aaru/Commands/Image/Convert.cs b/Aaru/Commands/Image/Convert.cs index 1272acda9..b4ba79c8f 100644 --- a/Aaru/Commands/Image/Convert.cs +++ b/Aaru/Commands/Image/Convert.cs @@ -432,7 +432,7 @@ sealed class ConvertImageCommand : Command return (int)ErrorNumber.FileExists; } - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; IMediaImage inputFormat = null; IBaseImage baseImage = null; diff --git a/Aaru/Commands/Image/Options.cs b/Aaru/Commands/Image/Options.cs index bb8f70431..b5f58a92f 100644 --- a/Aaru/Commands/Image/Options.cs +++ b/Aaru/Commands/Image/Options.cs @@ -35,7 +35,6 @@ 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; @@ -84,7 +83,7 @@ sealed class ListOptionsCommand : Command AaruConsole.DebugWriteLine("List-Options command", "--verbose={0}", verbose); Statistics.AddCommand("list-options"); - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; AaruConsole.WriteLine(UI.Read_Write_media_images_options); diff --git a/Aaru/Commands/ListNamespaces.cs b/Aaru/Commands/ListNamespaces.cs index bbd089ab3..f8ee7c000 100644 --- a/Aaru/Commands/ListNamespaces.cs +++ b/Aaru/Commands/ListNamespaces.cs @@ -35,7 +35,6 @@ 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; @@ -83,7 +82,7 @@ sealed class ListNamespacesCommand : Command AaruConsole.DebugWriteLine("List-Namespaces command", "--verbose={0}", verbose); Statistics.AddCommand("list-namespaces"); - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; foreach(KeyValuePair kvp in plugins.ReadOnlyFilesystems) { diff --git a/Aaru/Commands/Media/Dump.cs b/Aaru/Commands/Media/Dump.cs index 5650fa5ec..1ffded31b 100644 --- a/Aaru/Commands/Media/Dump.cs +++ b/Aaru/Commands/Media/Dump.cs @@ -42,7 +42,6 @@ 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; @@ -364,7 +363,7 @@ sealed class DumpMediaCommand : Command if(isResponse) eject = true; - PluginBase plugins = GetPluginBase.Instance; + PluginBase plugins = PluginBase.Singleton; List candidates = new(); string extension = Path.GetExtension(outputPath); @@ -609,7 +608,7 @@ sealed class DumpMediaCommand : Command return (int)ErrorNumber.NoSuchFile; } - plugins = GetPluginBase.Instance; + plugins = PluginBase.Singleton; candidates = new List(); // Try extension