Index: lib/Plagger/Plugin.pm =================================================================== --- lib/Plagger/Plugin.pm (revision 1912) +++ lib/Plagger/Plugin.pm (working copy) @@ -118,6 +118,24 @@ ); } +sub fake_assets_dir { + my $self = shift; + my $fake_id = shift; + my $context = Plagger->context; + + if ($self->conf->{assets_path}) { + return $self->conf->{assets_path}; # look at config:assets_path first + } + + my $assets_base = + $context->conf->{assets_path} || # or global:assets_path + File::Spec->catfile($FindBin::Bin, "assets"); # or "assets" under plagger script + + return File::Spec->catfile( + $assets_base, "plugins", $fake_id, + ); +} + sub log { my $self = shift; Plagger->context->log(@_, caller => ref($self)); @@ -147,7 +165,7 @@ } sub load_assets { - my($self, $rule, $callback) = @_; + my($self, $rule, $callback, $fake_dir) = @_; unless (blessed($rule) && $rule->isa('File::Find::Rule')) { $rule = File::Find::Rule->name($rule); @@ -160,7 +178,10 @@ ); # $rule isa File::Find::Rule - for my $file ($rule->in($self->assets_dir)) { + my $dir = $fake_dir + ? $self->fake_assets_dir($fake_dir) + : $self->assets_dir; + for my $file ($rule->in($dir)) { my $base = File::Basename::basename($file); $callback->($file, $base); }