+++ /dev/null
-package CPAN::Admin;
-use base CPAN;
-use CPAN; # old base.pm did not load CPAN on previous line
-use strict;
-use vars qw(@EXPORT $VERSION);
-use constant PAUSE_IP => "pause.perl.org";
-
-@EXPORT = qw(shell);
-$VERSION = sprintf "%.2f", substr(q$Rev: 231 $,4)/100;
-push @CPAN::Complete::COMMANDS, qw(register modsearch);
-if ($CPAN::META->has_inst("Term::ANSIColor")) {
- $CPAN::Shell::COLOR_REGISTERED = 1;
-}
-sub shell {
- CPAN::shell($_[0]||"admin's cpan> ",$_[1]);
-}
-
-sub CPAN::Shell::register {
- my($self,$mod,@rest) = @_;
- unless ($mod){
- print "register called without argument\n";
- return;
- }
- if ($CPAN::META->has_inst("URI::Escape")) {
- require URI::Escape;
- } else {
- print "register requires URI::Escape installed, otherwise it cannot work\n";
- return;
- }
- print "Got request for mod[$mod]\n";
- if (@rest) {
- my $modline = join " ", $mod, @rest;
- print "Sending to PAUSE [$modline]\n";
- my $emodline = URI::Escape::uri_escape($modline, '^\w ');
- $emodline =~ s/ /+/g;
- my $url =
- sprintf("https://%s/pause/authenquery?pause99_add_mod_modid=".
- "%s;SUBMIT_pause99_add_mod_hint=hint",
- PAUSE_IP,
- $emodline,
- );
- print "url[$url]\n\n";
- print ">>>>Trying to open a netscape window<<<<\n";
- sleep 1;
- system("netscape","-remote","openURL($url)");
- return;
- }
- my $m = CPAN::Shell->expand("Module",$mod);
- unless (ref $m) {
- print "Could not determine the object for $mod\n";
- return;
- }
- my $id = $m->id;
- print "Found module id[$id] in database\n";
-
- if (exists $m->{RO} && $m->{RO}{chapterid}) {
- print "$id is already registered\n";
- return;
- }
-
- my(@namespace) = split /::/, $id;
- my $rootns = $namespace[0];
-
- # Tk, XML and Apache need special treatment
- if ($rootns=~/^(Bundle)\b/){
- print "Bundles are not yet ready for registering\n";
- return;
- }
-
- # make a good suggestion for the chapter
- my(@simile) = CPAN::Shell->expand("Module","/^$rootns(:|\$)/");
- print "Found within this namespace ", join(", ", map { $_->id } @simile), "\n";
- my(%seench);
- for my $ch (map { exists $_->{RO} ? $_->{RO}{chapterid} : ""} @simile) {
- next unless $ch;
- $seench{$ch}=undef;
- }
- my(@seench) = sort grep {length($_)} keys %seench;
- my $reco_ch = "";
- if (@seench>1) {
- print "Found rootnamespace[$rootns] in the chapters [", join(", ", @seench), "]\n";
- $reco_ch = $seench[0];
- print "Picking $reco_ch\n";
- } elsif (@seench==1) {
- print "Found rootnamespace[$rootns] in the chapter[$seench[0]]\n";
- $reco_ch = $seench[0];
- } else {
- print "The new rootnamespace[$rootns] needs to be introduced. Oh well.\n";
- }
-
- # Look closer at the dist
- my $d = CPAN::Shell->expand("Distribution", $m->cpan_file);
- printf "Module comes with dist[%s]\n", $d->id;
- for my $contm ($d->containsmods) {
- if ($CPAN::META->exists("CPAN::Module",$contm)) {
- my $contm_obj = CPAN::Shell->expand("Module",$contm) or next;
- my $is_reg = exists $contm_obj->{RO} && $contm_obj->{RO}{description};
- printf(" in same dist: %s%s\n",
- $contm,
- $is_reg ? " already in modulelist" : "",
- );
- }
- }
-
- # get it so that m is better and we can inspect for XS
- CPAN::Shell->get($id);
- CPAN::Shell->m($id);
- CPAN::Shell->d($d->id);
-
- my $has_xs = 0;
- {
- my($mani,@mani);
- local $/ = "\n";
- open $mani, "$d->{build_dir}/MANIFEST" and @mani = <$mani>;
- my @xs = grep /\.xs\b/, @mani;
- if (@xs) {
- print "Found XS files: @xs";
- $has_xs=1;
- }
- }
- my $emodid = URI::Escape::uri_escape($id, '\W');
- my $ech = $reco_ch;
- $ech =~ s/ /+/g;
- my $description = $m->{MANPAGE} || "";
- $description =~ s/[A-Z]<//; # POD markup (and maybe more)
- $description =~ s/^\s+//; # leading spaces
- $description =~ s/>//; # POD
- $description =~ s/^\Q$id\E//; # usually this line starts with the modid
- $description =~ s/^[ \-]+//; # leading spaces and dashes
- substr($description,44) = "" if length($description)>44;
- $description = ucfirst($description);
- my $edescription = URI::Escape::uri_escape($description, '^\w ');
- $edescription =~ s/ /+/g;
- my $url =
- sprintf("https://%s/pause/authenquery?pause99_add_mod_modid=".
- "%s;pause99_add_mod_chapterid=%s;pause99_add_mod_statd=%s;".
- "pause99_add_mod_stats=%s;pause99_add_mod_statl=%s;".
- "pause99_add_mod_stati=%s;pause99_add_mod_description=%s;".
- "pause99_add_mod_userid=%s;SUBMIT_pause99_add_mod_preview=preview",
- PAUSE_IP,
- $emodid,
- $ech,
- "R",
- "d",
- $has_xs ? "c" : "p",
- "O",
- $edescription,
- $m->{RO}{CPAN_USERID},
- );
- print "$url\n\n";
- print ">>>>Trying to open a netscape window<<<<\n";
- system("netscape","-remote","openURL($url)");
-}
-
-sub CPAN::Shell::modsearch {
- my($self,@line) = @_;
- unless (@line){
- print "modsearch called without argument\n";
- return;
- }
- my $request = join " ", @line;
- print "Got request[$request]\n";
- my $erequest = URI::Escape::uri_escape($request, '^\w ');
- $erequest =~ s/ /+/g;
- my $url =
- sprintf("http://www.xray.mpe.mpg.de/cgi-bin/w3glimpse/modules?query=%s".
- "&errors=0&case=on&maxfiles=100&maxlines=30",
- $erequest,
- );
- print "$url\n\n";
- print ">>>>Trying to open a netscape window<<<<\n";
- system("netscape","-remote","openURL('$url')");
-}
-
-1;
-
-__END__
-
-=head1 NAME
-
-CPAN::Admin - A CPAN Shell for CPAN admins
-
-=head1 SYNOPSIS
-
-perl -MCPAN::Admin -e shell
-
-=head1 DESCRIPTION
-
-CPAN::Admin is a subclass of CPAN that adds the commands C<register>
-and C<modsearch> to the CPAN shell.
-
-C<register> calls C<get> on the named module, assembles a couple of
-informations (description, language), and calls Netscape with the
--remote argument so that a form is filled with all the assembled
-informations and the registration can be performed with a single
-click. If the command line has more than one argument, register does
-not run a C<get>, instead it interprets the rest of the line as DSLI
-status, description, and userid and sends them to netscape such that
-the form is again mostly filled and can be edited or confirmed with a
-single click. CPAN::Admin never performs the submission click for you,
-it is only intended to fill in the form on PAUSE and leave the
-confirmation to you.
-
-C<modsearch> simply passes the arguments to the search engine for the
-modules@perl.org mailing list at http://www.xray.mpe.mpg.de where all
-registration requests are stored. It does so in the same way as
-register, namely with the C<netscape -remote> command.
-
-An experimental feature has also been added, namely to color already
-registered modules in listings. If you have Term::ANSIColor installed,
-the u, r, and m commands will show already registered modules in
-green.
-
-=head1 PREREQISITES
-
-URI::Escape, netscape browser available in the path, netscape must
-understand the -remote switch (as far as I know, this is only
-available on UNIX); coloring of registered modules is only available
-if Term::ANSIColor is installed.
-
-=cut
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
-SHA1 dffb8c2be808260012cfb2b880133a115ef4b363 ChangeLog
+SHA1 a54a2d61e3ab59c7e24a24b9995132b221038f39 ChangeLog
SHA1 9b97524a7a91c815e46b19302a33829d3c26bbbf ChangeLog.old
SHA1 a029ffa2f2252bb8914eb658666244710994d256 Changes.old
-SHA1 61a9837044c45b47246f41424c101ec5b739cabf MANIFEST
-SHA1 0a72807a1326b4be93a15f6ed0e5e03ee931859e MANIFEST.SKIP
-SHA1 4fb4a21dcc19b02a37f33f533a8e399fd2d973d9 META.yml
-SHA1 c2c1d8faff850ce133841076e7c815e6e36b1351 Makefile.PL
+SHA1 86ca1e7f1afbf3f9829eadc046d52774fa604ca8 MANIFEST
+SHA1 c4090d00f577a0c5b562899afb75abc626805eb6 MANIFEST.SKIP
+SHA1 929940208ad7f6acb53fb4d9e717af5f32b16a57 META.yml
+SHA1 f9c7519871a5e7adc40d1591dc75f6fa2e16d82a Makefile.PL
SHA1 37e858c51409a297ef5d3fb35dc57cd3b57f9a4d PAUSE2003.pub
SHA1 af016003ad503ed078c5f8254521d13a3e0c494f PAUSE2005.pub
-SHA1 9db44d9b3219c20bffbc0579a8fd6db3ee41269e README
+SHA1 8461a8f84cbc764d7c10a2ab1de26e0099a68c77 README
SHA1 5adbf645e60685d6552fbcfff6e577399fe1f958 Releasenotes
-SHA1 4fb30323ec1614bd17279e5f9a274352b044af25 Todo
-SHA1 64f8ddd58693d482b282475210b4812b10d94f46 cpan
+SHA1 078d56fd1f2105c148115fe3965d026b61e82bf1 Todo
SHA1 efbe8e6882a2caa0d741b113959a706830ab5882 inc/Test/Builder.pm
SHA1 ae1d68262bedc2475e2c6fd478d99b259b4fb109 inc/Test/More.pm
SHA1 859ee1f3ba026d269c44b29d715d9af1e35333bc lib/Bundle/CPAN.pm
-SHA1 ce3cb7368e12240dded13175e3e8b1f2e92019ed lib/CPAN.pm
-SHA1 263a3def2375e38c67808d6a00b6dde14e91ed40 lib/CPAN/Admin.pm
+SHA1 c1d69e71005cd3785aab81d522d02d8bfd28e0d3 lib/CPAN.pm
+SHA1 104fd2b39fdba692143655b53bcf01d36c8ebf68 lib/CPAN/Admin.pm
SHA1 a09f2474f4be085c40790af007a7163558f52eef lib/CPAN/FirstTime.pm
SHA1 4fa9695417b54fc8d4e29684ad61689bc108274b lib/CPAN/Nox.pm
SHA1 f703cd15b95c5fd4ca6c0576b8b4566501882ccf lib/CPAN/Version.pm
-SHA1 0a7b5d987e699afe63d9e314f1aa456214c8e1d0 scripts/cpan
+SHA1 bdaa092be8b158a7c2141c873b2dbd76066f3f8f scripts/cpan
SHA1 67e80e1cfc3530932de7743dd0c833b2c387609d t/Nox.t
SHA1 215dace24b507de20011d36cbe2d16ddea78bcf3 t/loadme.t
SHA1 9e7950a79a153b532c5094c7091757d51040b218 t/mirroredby.t
SHA1 952e77e7944637eed1b5d202afa98baef8a4c64c t/signature.t
SHA1 d773586d80dbd79605a4b08c3ef310379c4d09c5 t/vcmp.t
-SHA1 5ff8e84beac28a6ea06995f1f1840e21ffb0dd7b t/version.t
+SHA1 b505a0db80ed4c835ad5676e9d1cbf09c86e6c34 t/version.t
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
-iD8DBQFDbdxt7IA58KMXwV0RAsgsAKCouQ0mcWsUs0aiycaU2JjONmqXTACgrB19
-ugwiu8ljK7CeNm5x5+8n3Qw=
-=uum0
+iD8DBQFDb9HB7IA58KMXwV0RAjh7AKCj/RkAnuj3fdKb2yoOOGB8reorJQCfQK82
+o/ldf0WnbrRG65kf3p7s15Q=
+=sAqA
-----END PGP SIGNATURE-----