public
Last active

Hypothetical Test-Reporter-Transport-Metabase-CPANTesters distribution

  • Download Gist
Build.PL
Perl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
use Module::Build 0.36;
 
eval { check_cpan_reporter_config(); };
 
my $class = Module::Build->subclass(
class => 'My::Module::Build::WithUninstall',
code => <<' ...',
sub ACTION_uninstall {
my $self = shift;
 
if (exists $self->install_map->{write} && -e $self->install_map->{write}) {
require ExtUtils::Install;
 
# Get the destination packlist
my $packlist = $self->install_map->{write};
 
# Uninstall the files listed in the packlist
ExtUtils::Install::uninstall($packlist, $self->verbose);
}
}
...
);
 
my $build = $class->new(
module_name => 'Test::Reporter::Transport::Metabase::CPANTesters',
 
# Module that are required
requires => {
'File::ShareDir' => '1.03',
'IO::Socket::SSL' => 0,
'LWP::UserAgent' => '6.00',
'Metabase::Client::Simple' => '0.008',
'Moose' => '1.24',
'MooseX::NonMoose' => '0.19',
'Test::Reporter::Transport::Metabase' => '1.999008',
},
 
share_dir => 'share',
);
 
$build->create_build_script;
 
sub check_cpan_reporter_config {
# Load CPAN::Reporter configuration module
require CPAN::Reporter::Config;
 
# Open the configuration
my $config = CPAN::Reporter::Config::_open_config_file();
 
if (!$config) {
# Unable to read configuration
print <<" NOTE";
 
*************************** NOTE ***************************
After installation, please setup your CPAN::Reporter config
and set the transport line according to the README.
************************************************************
 
NOTE
return;
}
 
# Get the file name of the configuration
my $file_name = CPAN::Reporter::Config::_get_config_file();
 
# Read the transport configuration
my $transport = $config->{_}->{transport};
 
if (defined $transport) {
# Change the transport option into readable variables
my ($class, %args) = split m{\s+}mosx, $transport;
 
if ($class eq 'Metabase' &&
defined $args{uri} &&
$args{uri} eq 'https://metabase.cpantesters.org/api/v1/') {
# Looks like the user should change to this distribution
delete $args{uri};
my $transport_args = join q{ }, %args;
print <<" NOTE";
 
*************************** NOTE ***************************
After installation, please change your CPAN::Reporter config
file to use this transport. You can do this by modifying
 
$file_name
 
and replacing the line
 
transport = $transport
 
with
 
transport = Metabase::CPANTesters $transport_args
 
************************************************************
 
NOTE
}
}
 
return;
}
INSTALL
1 2 3 4 5 6 7 8
This is a HYPOTHETICAL distribution to give easy secure access to
the CPAN Testers metabase over SSL with libwww-perl 6+.
 
perl Build.PL
perl Build
perl Build installdeps
perl Build install
perl Build realclean
MANIFEST
1 2 3 4 5 6 7 8 9 10 11
Build.PL
INSTALL
lib/Metabase/Client/CPANTesters.pm
lib/Test/Reporter/Transport/Metabase/CPANTesters.pm
MANIFEST
META.json
META.yml
README
scripts/set_official_config.pl
share/metabase.cpantesters.org.crt
UNINSTALL
META.json
JSON
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
{
"abstract" : "HYPOTHETICAL Metabase transport for CPAN Testers",
"author" : [
"unknown"
],
"dynamic_config" : 1,
"generated_by" : "Module::Build version 0.38, CPAN::Meta::Converter version 2.110580",
"license" : [
"unknown"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
"version" : "2"
},
"name" : "Test-Reporter-Transport-Metabase-CPANTesters",
"prereqs" : {
"configure" : {
"requires" : {
"Module::Build" : "0.38"
}
},
"runtime" : {
"requires" : {
"File::ShareDir" : "1.03",
"IO::Socket::SSL" : 0,
"LWP::UserAgent" : "6.00",
"Metabase::Client::Simple" : "0.008",
"Moose" : "1.24",
"MooseX::NonMoose" : "0.19",
"Test::Reporter::Transport::Metabase" : "1.999008"
}
}
},
"provides" : {
"Metabase::Client::CPANTesters" : {
"file" : "lib/Metabase/Client/CPANTesters.pm",
"version" : 0
},
"Test::Reporter::Transport::Metabase::CPANTesters" : {
"file" : "lib/Test/Reporter/Transport/Metabase/CPANTesters.pm",
"version" : 0
}
},
"release_status" : "stable",
"version" : "0.000"
}
META.yml
YAML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
---
abstract: 'HYPOTHETICAL Metabase transport for CPAN Testers'
author:
- unknown
build_requires: {}
configure_requires:
Module::Build: 0.38
dynamic_config: 1
generated_by: 'Module::Build version 0.38, CPAN::Meta::Converter version 2.110580'
license: unknown
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
name: Test-Reporter-Transport-Metabase-CPANTesters
provides:
Metabase::Client::CPANTesters:
file: lib/Metabase/Client/CPANTesters.pm
version: 0
Test::Reporter::Transport::Metabase::CPANTesters:
file: lib/Test/Reporter/Transport/Metabase/CPANTesters.pm
version: 0
requires:
File::ShareDir: 1.03
IO::Socket::SSL: 0
LWP::UserAgent: 6.00
Metabase::Client::Simple: 0.008
Moose: 1.24
MooseX::NonMoose: 0.19
Test::Reporter::Transport::Metabase: 1.999008
version: 0.000
README
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
This is a HYPOTHETICAL distribution to give easy secure access to
the CPAN Testers metabase over SSL with libwww-perl 6+.
 
# UPDATE
 
This distribution, even hypothetical as it was, is no longer needed
as a solution to the problem this module was written for has been
resolved. Please see
[CPAN Testers Metabase has a certificate](http://somethingdoug.com/thoughts/2011/03/15/cpan-testers-metabase-has-a-certificate/).
for information. The short script mentioned in the article to set
your `CPAN::Reporter` configuration back is included with this
distribution as `scripts/set_official_config.pl`. See `UNINSTALL`
for full instructions on how to uninstall the distribution.
 
To use this module for your CPAN::Reporter transport, edit your
`~/.cpanreporter/config.ini` file's transport directive to be
 
transport = Metabase::CPANTesters id_file ~/your/id_file.json
 
Note: I used Moose in these modules since they are hypothetical
and it made it much faster to create.
UNINSTALL
1 2 3 4 5 6 7 8 9 10
This is a HYPOTHETICAL distribution to give easy secure access to
the CPAN Testers metabase over SSL with libwww-perl 6+.
 
Now that this distribution is no longer needed, here are the
uninstall instructions:
 
perl Build.PL
perl script/set_official_config.pl
perl Build uninstall
perl Build realclean
lib/Metabase/Client/CPANTesters.pm
Perl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
package Metabase::Client::CPANTesters 0.000;
 
use Moose 1.24;
use MooseX::NonMoose 0.19;
 
use File::ShareDir 1.03;
 
extends 'Metabase::Client::Simple';
 
around _ua => sub {
my $orig = shift;
my $self = shift;
 
my $ua_was_generated = !$self->{_ua};
 
# Get the standard generated UA
my $ua = $self->$orig(@_);
 
if ($ua_was_generated) {
# Add our SSL options to the UA
$ua->ssl_opts(SSL_ca_file => File::ShareDir::dist_file('Test-Reporter-Transport-Metabase-CPANTesters', 'metabase.cpantesters.org.crt'));
}
 
return $ua;
};
 
no Moose;
__PACKAGE__->meta->make_immutable;
 
1;
 
__END__
 
=head1 NAME
 
Metabase::Client::CPANTesters - HYPOTHETICAL Metabase client for CPAN Testers
lib/Test/Reporter/Transport/Metabase/CPANTesters.pm
Perl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
package Test::Reporter::Transport::Metabase::CPANTesters 0.000;
 
use Moose 1.24;
 
use Test::Reporter::Transport::Metabase 1.999008;
 
has id_file => (
is => 'ro',
isa => 'Str',
required => 1,
);
has metabase_transport => (
is => 'ro',
isa => 'Test::Reporter::Transport::Metabase',
init_arg => undef,
lazy_build => 1,
handles => qr{.+}mosx,
);
has uri => (
is => 'ro',
isa => 'Str',
default => 'https://metabase.cpantesters.org/api/v1/',
);
 
sub _build_metabase_transport {
my $self = shift;
 
return Test::Reporter::Transport::Metabase->new(
client => 'Metabase::Client::CPANTesters',
id_file => $self->id_file,
uri => $self->uri,
);
}
 
no Moose;
__PACKAGE__->meta->make_immutable;
 
1;
 
__END__
 
=head1 NAME
 
Test::Reporter::Transport::Metabase::CPANTesters - HYPOTHETICAL Metabase transport for CPAN Testers
scripts/set_official_config.pl
Perl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
#!/usr/bin/env perl
 
use 5.006;
use CPAN::Reporter::Config;
 
my $config_file = CPAN::Reporter::Config::_get_config_file();
my $config = CPAN::Reporter::Config::_open_config_file();
 
my ($class, %args) = split m{\s+}mosx, $config->{_}->{transport};
 
if ($class eq 'Metabase::CPANTesters') {
print "Modifying configuration file transport line from\n", $config->{_}->{transport}, "\n";
# Correct the transport information
$class = 'Metabase';
$args{uri} = 'https://metabase.cpantesters.org/api/v1/';
$config->{_}->{transport} = "$class " . join q{ }, %args;
print "to\n", $config->{_}->{transport}, "\n";
# Write the configuration
$config->write($config_file);
print "Done\n";
}
elsif ($config->{_}->{transport}) {
# Modification does not look necessary
print "Leaving transport configuration set to\n", $config->{_}->{transport}, "\n";
}
else {
# Modification does not look like it should occur
print "Not modifying configuration without transport directive\n";
}
 
exit 0;
share/metabase.cpantesters.org.crt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
-----BEGIN CERTIFICATE-----
MIIDRjCCAq+gAwIBAgIJAJ6JIAAh+7ZVMA0GCSqGSIb3DQEBBQUAMHYxCzAJBgNV
BAYTAlVTMREwDwYDVQQIEwhOZXcgWW9yazERMA8GA1UEBxMITmV3IFlvcmsxHjAc
BgNVBAoTFUNQQU4gVGVzdGVycyBNZXRhYmFzZTEhMB8GA1UEAxMYbWV0YWJhc2Uu
Y3BhbnRlc3RlcnMub3JnMB4XDTEwMDIxODE5MjkyNVoXDTEyMTExNDE5MjkyNVow
djELMAkGA1UEBhMCVVMxETAPBgNVBAgTCE5ldyBZb3JrMREwDwYDVQQHEwhOZXcg
WW9yazEeMBwGA1UEChMVQ1BBTiBUZXN0ZXJzIE1ldGFiYXNlMSEwHwYDVQQDExht
ZXRhYmFzZS5jcGFudGVzdGVycy5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJ
AoGBANrCjEpVS4lsgDcrYrSm0U6b64LwGlGEPkG80yvBmFvP+yue4KU0Z8MVNoZj
BF+cY73xP28Tg3xuGb4pbPmBo7XrQv6H4nzxLgcp0fljeI++Z70KYHPWZ34+zIao
67JJw0R656T8xpBaKZdstWnEhvRsjX7Bf8+ysK3xfCWKCZeLAgMBAAGjgdswgdgw
HQYDVR0OBBYEFM/97yImTvtUUhzWd6lfCd+7MiSHMIGoBgNVHSMEgaAwgZ2AFM/9
7yImTvtUUhzWd6lfCd+7MiSHoXqkeDB2MQswCQYDVQQGEwJVUzERMA8GA1UECBMI
TmV3IFlvcmsxETAPBgNVBAcTCE5ldyBZb3JrMR4wHAYDVQQKExVDUEFOIFRlc3Rl
cnMgTWV0YWJhc2UxITAfBgNVBAMTGG1ldGFiYXNlLmNwYW50ZXN0ZXJzLm9yZ4IJ
AJ6JIAAh+7ZVMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAShlhs/P3
YtOVisV6QNs56fKvTsHNxwg2+iP2EI5UmhYOwJdgsIic/QEKDEY73ve58MN3yehc
i3Kgjlkh8nw65TAxHnY47Bz4rAcMh/mxTXVXI/RQYZvWOWMdcHG5VPVZXm5krbZB
45FHcmV/Qb+Zig4ry/TAp7wrad4pH60ls/c=
-----END CERTIFICATE-----

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.