Skip to content

@dougwilson /Build.PL
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Hypothetical Test-Reporter-Transport-Metabase-CPANTesters distribution
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.
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;
}
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
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
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
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
{
"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"
}
---
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
-----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-----
#!/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;
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.