From 759cd17a95f8819076751dd50bdf43c568aacb0f Mon Sep 17 00:00:00 2001 From: dakkar Date: Tue, 27 Sep 2011 22:21:31 +0100 Subject: =?UTF-8?q?works!=20apart=20from=20tag=20extraction=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/Dist/Zilla/Plugin/Boilerplate.pm | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'lib/Dist/Zilla/Plugin/Boilerplate.pm') diff --git a/lib/Dist/Zilla/Plugin/Boilerplate.pm b/lib/Dist/Zilla/Plugin/Boilerplate.pm index 0a0d25e..4686a22 100644 --- a/lib/Dist/Zilla/Plugin/Boilerplate.pm +++ b/lib/Dist/Zilla/Plugin/Boilerplate.pm @@ -14,14 +14,20 @@ use Path::Class; with( 'Dist::Zilla::Role::FileMunger', 'Dist::Zilla::Role::FileFinderUser' => { - default_finders => [ ':InstallModules', ':ExecFiles' ], + default_finders => [ + ':InstallModules', + ':IncModules', + ':ExecFiles', + ':TestFiles', + ], }, 'Dist::Zilla::Role::PPI', ); +sub mvp_multivalue_args { 'code' }; has code => ( is => 'ro', - isa => 'Str', + isa => 'ArrayRef[Str]', required => 1, ); @@ -34,9 +40,8 @@ has _parsed_code => ( sub _build_parsed_code { my ($self) = @_; -warn "parsing ".$self->code."\n"; - - PPI::Document->new(\$self->code); + my $code = $self->code->join("\n"); + PPI::Document->new(\$code); } sub import { @@ -76,9 +81,8 @@ sub _find_dzil_root { sub eval_in { my ($self,$package) = @_; - my $code = $self->code;my $name = $self->plugin_name; + my $code = $self->code->join("\n");my $name = $self->plugin_name; my $str = "{package $package;$code;1}"; - warn "evaling $str\n"; local $@; eval $str or $self->log_error("Couldn't eval code for boilerplate $name into $package: $@"); @@ -101,10 +105,14 @@ sub munge_file { $element->module eq __PACKAGE__ } ); + return unless $my_uses; for my $use ($my_uses->flatten) { my $tags = $self->_find_tags_from_ppi($use->arguments); if ($tags->first(sub{$_ eq $self->plugin_name})) { - $use->insert_after($self->_parsed_code); + for my $elem ($self->_parsed_code->children) { + $use->insert_before($elem) + or $self->log_warn("Couldn't insert $elem before $use\n"); + } $use->delete; } } @@ -114,7 +122,7 @@ sub munge_file { sub _find_tags_from_ppi { my ($self,$node) = @_; - return (); # ehm + return 'foo'; } } package Dist::Zilla::Plugin::Boilerplate::Chrome;{ -- cgit v1.2.3