diff options
Diffstat (limited to 'lib/ManaTools/Shared/disk_backend.pm')
-rw-r--r-- | lib/ManaTools/Shared/disk_backend.pm | 24 |
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', + } +); + #============================================================= |