Fedora-App-MaintainerTools
view release on metacpan or search on metacpan
lib/CPAN/MetaMuncher.pm view on Meta::CPAN
#############################################################################
#
# Digest a META.yml so we can get at the good parts easily :)
#
# Author: Chris Weyl (cpan:RSRCHBOY), <cweyl@alumni.drew.edu>
# Company: No company, personal work
# Created: 05/11/2009 11:32:18 PM PDT
#
# Copyright (c) 2009 Chris Weyl <cweyl@alumni.drew.edu>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
#############################################################################
package CPAN::MetaMuncher;
use Moose;
use MooseX::AttributeHelpers;
use MooseX::Types::Path::Class ':all';
use Path::Class;
use JSON;
use YAML::Tiny;
use namespace::clean -except => 'meta';
our $VERSION = '0.006';
# debugging
#use Smart::Comments '###', '####';
has module => (is => 'rw', required => 1, isa => 'CPANPLUS::Module');
# FIXME -- we should check to make sure we're supported, etc, etc
#has _meta => (is => 'ro', isa => 'YAML::Tiny', lazy_build => 1);
#has _meta => (is => 'ro', isa => 'ArrayRef[HashRef]|YAML::Tiny', lazy_build => 1);
has _meta => (is => 'ro', lazy_build => 1);
sub _build__meta {
my $self = shift @_;
$self->module->fetch;
my $meta_file = file $self->module->extract, 'META.yml';
#YAML::Tiny->read(file($self->module->extract, 'META.yml'));
my $m;
local $@;
eval { $m = YAML::Tiny->read(file($self->module->extract, 'META.yml')) };
warn "Eval error (yaml::tiny): $@" if $@;
#return $m if defined $m;
return $m unless $@;
eval { $m = from_json(file($self->module->extract, 'META.yml')->slurp) };
# FIXME we really should just drop the indexing above. sigh.
return [ $m ] if defined $m;
die "Eval error reading META: $@";
}
sub data { shift->_meta->[0] }
# simple
has version => (is => 'rw', isa => 'Str', lazy_build => 1);
sub _build_version { shift->_meta->[0]->{version} }
# complex
has _rpm_build_requires => (
metaclass => 'Collection::ImmutableHash',
is => 'ro',
isa => 'HashRef[Str]',
lazy_build => 1,
provides => {
#'' => '_rpm_build_requires',
'count' => 'num_rpm_build_requires',
'empty' => 'has_any_rpm_build_requires',
'exists' => 'has_rpm_br_on',
'keys' => 'rpm_build_requires',
'get' => 'rpm_build_require_version',
'kv' => 'rpm_build_requires_kv_pairs',
elements => 'full_rpm_build_requires',
},
);
sub _build__rpm_build_requires {
shift->_rpm_requires_from_meta_keys(
qw(requires configure_requires build_requires)
);
}
has _rpm_requires => (
metaclass => 'Collection::ImmutableHash',
( run in 1.421 second using v1.01-cache-2.11-cpan-39bf76dae61 )