aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ManaTools/Shared/disk_backend.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/ManaTools/Shared/disk_backend.pm')
-rw-r--r--lib/ManaTools/Shared/disk_backend.pm24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/ManaTools/Shared/disk_backend.pm b/lib/ManaTools/Shared/disk_backend.pm
index f5bca59c..199f76af 100644
--- a/lib/ManaTools/Shared/disk_backend.pm
+++ b/lib/ManaTools/Shared/disk_backend.pm
@@ -129,12 +129,24 @@ has 'plugins' => (
isa => 'ArrayRef[ManaTools::Shared::disk_backend::Plugin]',
default => sub {
my $self = shift;
+ my $fs = $self->fs();
my $plugins = [];
my @more = ();
for my $pluginfile (glob((module_path($self->blessed()) =~ s/\.pm$//r ) ."/Plugin/*.pm")) {
my $pluginclass = "ManaTools::Shared::disk_backend::Plugin::". basename($pluginfile, '.pm');
require $pluginfile;
my $plugin = $pluginclass->new(parent => $self);
+
+ # index the fstypes
+ if ($plugin->does('ManaTools::Shared::disk_backend::FileSystem')) {
+ # add all types to link to this plugin
+ my $fstypes = $plugin->fstypes();
+ for my $fstype (keys %{$fstypes}) {
+ $fs->{$fstype} = $fstypes->{$fstype};
+ }
+ }
+
+ # check dependencies
if ($self->_check_dependencies($plugins, @{$plugin->dependencies()})) {
push @{$plugins}, $plugin;
}
@@ -171,6 +183,18 @@ has 'parts' => (
}
);
+has 'fs' => (
+ is => 'ro',
+ isa => 'HashRef',
+ traits => ['Hash'],
+ default => sub {
+ return {};
+ },
+ handles => {
+ fstype => 'get',
+ }
+);
+
#=============================================================