dslinux/user/perl/lib/CPAN/bin cpan

cayenne dslinux_cayenne at user.in-berlin.de
Mon Dec 4 18:00:28 CET 2006

Update of /cvsroot/dslinux/dslinux/user/perl/lib/CPAN/bin
In directory antilope:/tmp/cvs-serv17422/lib/CPAN/bin

Added Files:
Log Message:
Adding fresh perl source to HEAD to branch from

--- NEW FILE: cpan ---
# $Id: cpan,v 1.1 2006-12-04 17:00:26 dslinux_cayenne Exp $
use strict;

=head1 NAME

cpan - easily interact with CPAN from the command line


	# with arguments, installs specified modules
	cpan module_name [ module_name ... ]
	# with switches, installs modules with extra behavior
	cpan [-cimt] module_name [ module_name ... ]
	# without arguments, starts CPAN shell
	# without arguments, but some switches
	cpan [-ahrv]


This script provides a command interface (not a shell) to CPAN.pm.

=head2 Meta Options

These options are mutually exclusive, and the script processes
them in this order: [ahvr].  Once the script finds one, it ignores
the others, and then exits after it finishes the task.  The script
ignores any other command line options.

=over 4

=item -a

Creates the CPAN.pm autobundle with CPAN::Shell->autobundle.  

=item -h

Prints a help message.

=item -r

Recompiles dynamically loaded modules with CPAN::Shell->recompile.

=item -v

Print the script version and CPAN.pm version.


=head2 Module options

These options are mutually exclusive, and the script processes
them in alphabetical order. 

=over 4

=item c

Runs a `make clean` in the specified module's directories.

=item i

Installed the specified modules.

=item m

Makes the specified modules.

=item t

Runs a `make test` on the specified modules.


=head2 Examples

	# print a help message
	cpan -h
	# print the version numbers
	cpan -v
	# create an autobundle
	cpan -a
	# recompile modules
	cpan -r 
	# install modules
	cpan -i Netscape::Booksmarks Business::ISBN

=head1 TO DO

* add options for other CPAN::Shell functions
autobundle, clean, make, recompile, test

=head1 BUGS

* none noted

=head1 SEE ALSO

Most behaviour, including environment variables and configuration,
comes directly from CPAN.pm.

=head1 AUTHOR

brian d foy <bdfoy at cpan.org>


use CPAN ();
use Getopt::Std;

my $VERSION = 
	sprintf "%d.%02d", q$Revision: 1.1 $ =~ m/ (\d+) \. (\d+) /xg;

my $Default = 'default';

my $META_OPTIONS = 'ahvr';

	$Default => 'install',
	'c'      => 'clean',
	'i'      => 'install',
	'm'      => 'make',
	't'      => 'test',

my @cpan_options = grep { $_ ne $Default } sort keys %CPAN_METHODS;

my $arg_count = @ARGV;
my %options;

	join( '', @cpan_options, $META_OPTIONS ), \%options );
if( $options{h} )
	print STDERR "Printing help message -- ignoring other arguments\n"
		if $arg_count > 1;

	print STDERR "Use perldoc to read the documentation\n";
	exit 0;
elsif( $options{v} )
	print STDERR "Printing version message -- ignoring other arguments\n"
		if $arg_count > 1;

	print STDERR "cpan script version $VERSION\n" .
		"CPAN.pm version $CPAN_VERSION\n";
	exit 0;
elsif( $options{a} )
	print "Creating autobundle in ", $CPAN::Config->{cpan_home}, 
	print STDERR "Creating autobundle -- ignoring other arguments\n"
		if $arg_count > 1;

	exit 0;
elsif( $options{r} )
	print STDERR "Creating autobundle -- ignoring other arguments\n"
		if $arg_count > 1;
	my $switch = '';
	foreach my $option ( @cpan_options )
		next unless $options{$option};
		$switch = $option;
	   if( not $switch and     @ARGV ) { $switch = $Default;     }
	elsif( not $switch and not @ARGV ) { CPAN::shell(); exit 0;  }	
	elsif(     $switch and not @ARGV ) 
		{ die "Nothing to $CPAN_METHODS{$switch}!\n"; }

	my $method = $CPAN_METHODS{$switch};
	die "CPAN.pm cannot $method!\n" unless CPAN::Shell->can( $method );
	foreach my $arg ( @ARGV )
		CPAN::Shell->$method( $arg );

More information about the dslinux-commit mailing list