App-cpantimes
view release on metacpan or search on metacpan
sub parse_meta_string {
my($self, $yaml) = @_;
return eval { (Parse::CPAN::Meta::Load($yaml))[0] } || undef;
}
1;
APP_CPANMINUS_SCRIPT
$fatpacked{"App/cpantimes.pm"} = <<'APP_CPANTIMES';
package App::cpantimes;
our $VERSION = "1.502101";
=encoding utf8
=head1 NAME
App::cpantimes - get, unpack, build, install and report on modules from CPAN
=head1 SYNOPSIS
cpant Module
Run C<cpant -h> or C<perldoc cpant> for more options.
=head1 DESCRIPTION
C<cpant> is a fairly trivial fork of L<cpanm>, adding support for
submitting reports to the CPAN testers service.
=head1 SEE ALSO
This is severely based on L<App::cpanminus>, so see that for help,
credits, etc.
=head1 COPYRIGHT
Copyright 2012-2013 Toby Inkster.
The standalone executable contains the following modules embedded.
=over 4
=item L<App::cpanminus::script> Copyright 2010- Tatsuhiko Miyagawa
=item L<CPAN::DistnameInfo> Copyright 2003 Graham Barr
=item L<Parse::CPAN::Meta> Copyright 2006-2009 Adam Kennedy
=item L<local::lib> Copyright 2007-2009 Matt S Trout
=item L<HTTP::Tiny> Copyright 2011 Christian Hansen
=item L<Module::Metadata> Copyright 2001-2006 Ken Williams. 2010 Matt S Trout
=item L<version> Copyright 2004-2010 John Peacock
=item L<JSON::PP> Copyright 2007â2011 by Makamaka Hannyaharamitu
=item L<CPAN::Meta> Copyright (c) 2010 by David Golden and Ricardo Signes
=item L<Try::Tiny> Copyright (c) 2009 Yuval Kogman
=item L<parent> Copyright (c) 2007-10 Max Maischein
=item L<Version::Requirements> copyright (c) 2010 by Ricardo Signes
=item L<CPAN::Meta::YAML> copyright (c) 2010 by Adam Kennedy
=back
=head1 LICENSE
Same as Perl.
=cut
1;
APP_CPANTIMES
$fatpacked{"App/cpantimes/script.pm"} = <<'APP_CPANTIMES_SCRIPT';
package App::cpantimes::script;
our $VERSION = "1.502101";
use 5.008;
use strict;
use base 'App::cpanminus::script';
my $HOME =
defined $ENV{HOME} ? $ENV{HOME} :
defined $ENV{APPDATA} ? $ENV{APPDATA} :
die("Could not determine home directory!");
sub new
{
my ($class, @args) = @_;
my $self = $class->SUPER::new(@args);
$self->{_metabase_api} = 'https://metabase.cpantesters.org/api/v1/';
$self->{_metabase_file} = "File::Spec"->catfile(
$HOME,
qw< .cpantesters metabase_id.json >,
);
eval {
require Test::Reporter;
require Test::Reporter::Transport::Metabase;
require LWP::Protocol::https;
-r $self->{_metabase_file};
} or warn <<"WARNING";
*** WARNING ***
You are using cpantimes, a modified version of cpanminus with CPAN testers
support, but it is not correctly configured. Please ensure Test::Reporter,
Test::Reporter::Transport::Metabase and LWP::Protocol::https are installed,
and use the `metabase-profile` tool to create Metabase login details as
"$self->{_metabase_file}".
Installation will now continue as normal, but test reports will NOT be
sent!
}
sub json_backend {
local $Module::Load::Conditional::CHECK_INC_HASH = 1;
if (! $ENV{PERL_JSON_BACKEND} or $ENV{PERL_JSON_BACKEND} eq 'JSON::PP') {
_can_load( 'JSON::PP' => 2.27103 )
or croak "JSON::PP 2.27103 is not available\n";
return 'JSON::PP';
}
else {
_can_load( 'JSON' => 2.5 )
or croak "JSON 2.5 is required for " .
"\$ENV{PERL_JSON_BACKEND} = '$ENV{PERL_JSON_BACKEND}'\n";
return "JSON";
}
}
sub _slurp {
open my $fh, "<" . IO_LAYER, "$_[0]"
or die "can't open $_[0] for reading: $!";
return do { local $/; <$fh> };
}
sub _can_load {
my ($module, $version) = @_;
(my $file = $module) =~ s{::}{/}g;
$file .= ".pm";
return 1 if $INC{$file};
return 0 if exists $INC{$file}; # prior load failed
eval { require $file; 1 }
or return 0;
if ( defined $version ) {
eval { $module->VERSION($version); 1 }
or return 0;
}
return 1;
}
# Kept for backwards compatibility only
# Create an object from a file
sub LoadFile ($) {
require CPAN::Meta::YAML;
return CPAN::Meta::YAML::LoadFile(shift)
or die CPAN::Meta::YAML->errstr;
}
# Parse a document from a string.
sub Load ($) {
require CPAN::Meta::YAML;
return CPAN::Meta::YAML::Load(shift)
or die CPAN::Meta::YAML->errstr;
}
1;
__END__
PARSE_CPAN_META
$fatpacked{"Try/Tiny.pm"} = <<'TRY_TINY';
package Try::Tiny;
use strict;
#use warnings;
use vars qw(@EXPORT @EXPORT_OK $VERSION @ISA);
BEGIN {
require Exporter;
@ISA = qw(Exporter);
}
$VERSION = "0.09";
$VERSION = eval $VERSION;
@EXPORT = @EXPORT_OK = qw(try catch finally);
$Carp::Internal{+__PACKAGE__}++;
# Need to prototype as @ not $$ because of the way Perl evaluates the prototype.
# Keeping it at $$ means you only ever get 1 sub because we need to eval in a list
# context & not a scalar one
sub try (&;@) {
my ( $try, @code_refs ) = @_;
# we need to save this here, the eval block will be in scalar context due
# to $failed
my $wantarray = wantarray;
my ( $catch, @finally );
# find labeled blocks in the argument list.
# catch and finally tag the blocks by blessing a scalar reference to them.
foreach my $code_ref (@code_refs) {
next unless $code_ref;
my $ref = ref($code_ref);
if ( $ref eq 'Try::Tiny::Catch' ) {
$catch = ${$code_ref};
} elsif ( $ref eq 'Try::Tiny::Finally' ) {
push @finally, ${$code_ref};
} else {
use Carp;
confess("Unknown code ref type given '${ref}'. Check your usage & try again");
}
}
# save the value of $@ so we can set $@ back to it in the beginning of the eval
my $prev_error = $@;
my ( @ret, $error, $failed );
# FIXME consider using local $SIG{__DIE__} to accumulate all errors. It's
# not perfect, but we could provide a list of additional errors for
# $catch->();
{
# localize $@ to prevent clobbering of previous value by a successful
# eval.
local $@;
# failed will be true if the eval dies, because 1 will not be returned
# from the eval body
$failed = not eval {
$@ = $prev_error;
# evaluate the try block in the correct context
if ( $wantarray ) {
@ret = $try->();
} elsif ( defined $wantarray ) {
$ret[0] = $try->();
} else {
$try->();
};
return 1; # properly set $fail to false
};
# copy $@ to $error; when we leave this scope, local $@ will revert $@
# back to its previous value
$error = $@;
}
# set up a scope guard to invoke the finally block at the end
my @guards =
map { Try::Tiny::ScopeGuard->_new($_, $failed ? $error : ()) }
@finally;
# at this point $failed contains a true value if the eval died, even if some
# destructor overwrote $@ as the eval was unwinding.
if ( $failed ) {
# if we got an error, invoke the catch block.
if ( $catch ) {
# This works like given($error), but is backwards compatible and
# sets $_ in the dynamic scope for the body of C<$catch>
for ($error) {
return $catch->($error);
}
# in case when() was used without an explicit return, the C<for>
# loop will be aborted and there's no useful return value
}
return;
} else {
# no failure, $@ is back to what it was, everything is fine
return $wantarray ? @ret : $ret[0];
}
}
sub catch (&;@) {
my ( $block, @rest ) = @_;
return (
bless(\$block, 'Try::Tiny::Catch'),
@rest,
);
}
sub finally (&;@) {
my ( $block, @rest ) = @_;
return (
bless(\$block, 'Try::Tiny::Finally'),
@rest,
);
}
{
package # hide from PAUSE
Try::Tiny::ScopeGuard;
sub _new {
shift;
bless [ @_ ];
}
sub DESTROY {
my @guts = @{ shift() };
my $code = shift @guts;
$code->(@guts);
}
}
__PACKAGE__
__END__
TRY_TINY
$fatpacked{"lib/core/only.pm"} = <<'LIB_CORE_ONLY';
package lib::core::only;
use strict;
use warnings FATAL => 'all';
use Config;
sub import {
@INC = @Config{qw(privlibexp archlibexp)};
return
}
1;
LIB_CORE_ONLY
$fatpacked{"local/lib.pm"} = <<'LOCAL_LIB';
use strict;
use warnings;
package local::lib;
use 5.008001; # probably works with earlier versions but I'm not supporting them
# (patches would, of course, be welcome)
use File::Spec ();
use File::Path ();
use Carp ();
use Config;
our $VERSION = '1.008001'; # 1.8.1
our @KNOWN_FLAGS = qw(--self-contained);
sub import {
my ($class, @args) = @_;
# Remember what PERL5LIB was when we started
my $perl5lib = $ENV{PERL5LIB} || '';
my %arg_store;
for my $arg (@args) {
( run in 0.485 second using v1.01-cache-2.11-cpan-ceb78f64989 )