From: Vincent Pit Date: Sat, 17 Apr 2010 12:26:56 +0000 (+0200) Subject: Put the META extraction logic into a separate ->meta method X-Git-Tag: v0.10~4 X-Git-Url: http://git.vpit.fr/?p=perl%2Fmodules%2FCPANPLUS-Dist-Gentoo.git;a=commitdiff_plain;h=eefbd51540c659904876258e2b74dbbcfda37072 Put the META extraction logic into a separate ->meta method --- diff --git a/lib/CPANPLUS/Dist/Gentoo.pm b/lib/CPANPLUS/Dist/Gentoo.pm index a3264bb..5f7545f 100644 --- a/lib/CPANPLUS/Dist/Gentoo.pm +++ b/lib/CPANPLUS/Dist/Gentoo.pm @@ -193,6 +193,7 @@ sub init { my $conf = $self->parent->parent->configure_object; $stat->mk_accessors(qw/name version author distribution desc uri src license + meta fetched_arch requires ebuild_name ebuild_version ebuild_dir ebuild_file portdir_overlay @@ -365,6 +366,36 @@ sub prepare { return $OK->(); } +=head2 C + +Returns the contents of the F or F files as parsed by L. + +=cut + +sub meta { + my $self = shift; + my $mod = $self->parent; + my $stat = $self->status; + + my $meta = $stat->meta; + return $meta if defined $meta; + + my $extract_dir = $mod->status->extract; + + for my $name (qw/META.json META.yml/) { + my $meta_file = File::Spec->catdir($extract_dir, $name); + next unless -e $meta_file; + + my $meta = eval { Parse::CPAN::Meta::LoadFile($meta_file) }; + if (defined $meta) { + $stat->meta($meta); + return $meta; + } + } + + return; +} + =head2 C Returns an array reference to a list of Gentoo licences identifiers under which the current distribution is released. @@ -390,20 +421,10 @@ sub intuit_license { return \@licenses if @licenses; } - my $extract_dir = $mod->status->extract; - - for my $meta_file (qw/META.json META.yml/) { - my $meta = eval { - Parse::CPAN::Meta::LoadFile(File::Spec->catdir( - $extract_dir, - $meta_file, - )); - } or next; - my $license = $meta->{license}; - if (defined $license) { - my @licenses = CPANPLUS::Dist::Gentoo::Maps::license_c2g($license); - return \@licenses if @licenses; - } + my $license = $self->meta->{license}; + if (defined $license) { + my @licenses = CPANPLUS::Dist::Gentoo::Maps::license_c2g($license); + return \@licenses if @licenses; } return [ CPANPLUS::Dist::Gentoo::Maps::license_c2g('perl') ];