package Module::Setup::Plugin::Helper; use strict; use warnings; use base 'Module::Setup::Plugin'; use Module::Setup::Path::Dir; sub register { my $self = shift; $self->add_trigger( after_setup_module_attribute => $self->can('setup_module_attribute') ); $self->add_trigger( after_setup_template_vars => $self->can('setup_template_vars') ); } sub setup_module_attribute { my $setup = shift; if ($setup->{config}->{class}->is_append_files) { $setup->distribute->{dist_path} = Module::Setup::Path::Dir->new('.'); } } sub setup_template_vars { my ($setup, $vars) = @_; my $conf = $setup->{helper} || {}; my $flavor_class = $setup->{config}->{class}; my $prefix = $flavor_class->helper_option_prefix; my %is_make_path = map { $_ => 1 } $flavor_class->generate_path_option_names; while (my($k, $v) = each %{ $conf }) { $vars->{"${prefix}_$k"} = $v; if ($is_make_path{$k}) { ($vars->{"${prefix}_${k}_path"} = $v) =~ s!::!/!g; } } if (ref($conf->{setup_template_vars_callback}) eq 'CODE') { $conf->{setup_template_vars_callback}->($setup, $vars); } } 1; =head1 NAME Module::Setup::Plugin::Helper - L support plugin =head1 SEE ALSO L =cut