mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-01-24 03:33:01 -08:00
353 lines
8.2 KiB
Perl
353 lines
8.2 KiB
Perl
#!/usr/bin/perl
|
|
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
|
|
if 0; # ^ Run only under a shell
|
|
#!/usr/local/bin/perl
|
|
|
|
BEGIN { pop @INC if $INC[-1] eq '.' }
|
|
use strict;
|
|
use vars qw($VERSION);
|
|
|
|
use App::Cpan;
|
|
use CPAN::Version;
|
|
my $minver = '1.64';
|
|
if ( CPAN::Version->vlt($App::Cpan::VERSION, $minver) ) {
|
|
warn "WARNING: your version of App::Cpan is $App::Cpan::VERSION while we would expect at least $minver";
|
|
}
|
|
$VERSION = '1.64';
|
|
|
|
my $rc = App::Cpan->run( @ARGV );
|
|
|
|
# will this work under Strawberry Perl?
|
|
exit( $rc || 0 );
|
|
|
|
=head1 NAME
|
|
|
|
cpan - easily interact with CPAN from the command line
|
|
|
|
=head1 SYNOPSIS
|
|
|
|
# with arguments and no switches, installs specified modules
|
|
cpan module_name [ module_name ... ]
|
|
|
|
# with switches, installs modules with extra behavior
|
|
cpan [-cfFimtTw] module_name [ module_name ... ]
|
|
|
|
# use local::lib
|
|
cpan -I module_name [ module_name ... ]
|
|
|
|
# one time mirror override for faster mirrors
|
|
cpan -p ...
|
|
|
|
# with just the dot, install from the distribution in the
|
|
# current directory
|
|
cpan .
|
|
|
|
# without arguments, starts CPAN.pm shell
|
|
cpan
|
|
|
|
# without arguments, but some switches
|
|
cpan [-ahpruvACDLOPX]
|
|
|
|
=head1 DESCRIPTION
|
|
|
|
This script provides a command interface (not a shell) to CPAN. At the
|
|
moment it uses CPAN.pm to do the work, but it is not a one-shot command
|
|
runner for CPAN.pm.
|
|
|
|
=head2 Options
|
|
|
|
=over 4
|
|
|
|
=item -a
|
|
|
|
Creates a CPAN.pm autobundle with CPAN::Shell->autobundle.
|
|
|
|
=item -A module [ module ... ]
|
|
|
|
Shows the primary maintainers for the specified modules.
|
|
|
|
=item -c module
|
|
|
|
Runs a `make clean` in the specified module's directories.
|
|
|
|
=item -C module [ module ... ]
|
|
|
|
Show the F<Changes> files for the specified modules
|
|
|
|
=item -D module [ module ... ]
|
|
|
|
Show the module details. This prints one line for each out-of-date module
|
|
(meaning, modules locally installed but have newer versions on CPAN).
|
|
Each line has three columns: module name, local version, and CPAN
|
|
version.
|
|
|
|
=item -f
|
|
|
|
Force the specified action, when it normally would have failed. Use this
|
|
to install a module even if its tests fail. When you use this option,
|
|
-i is not optional for installing a module when you need to force it:
|
|
|
|
% cpan -f -i Module::Foo
|
|
|
|
=item -F
|
|
|
|
Turn off CPAN.pm's attempts to lock anything. You should be careful with
|
|
this since you might end up with multiple scripts trying to muck in the
|
|
same directory. This isn't so much of a concern if you're loading a special
|
|
config with C<-j>, and that config sets up its own work directories.
|
|
|
|
=item -g module [ module ... ]
|
|
|
|
Downloads to the current directory the latest distribution of the module.
|
|
|
|
=item -G module [ module ... ]
|
|
|
|
UNIMPLEMENTED
|
|
|
|
Download to the current directory the latest distribution of the
|
|
modules, unpack each distribution, and create a git repository for each
|
|
distribution.
|
|
|
|
If you want this feature, check out Yanick Champoux's C<Git::CPAN::Patch>
|
|
distribution.
|
|
|
|
=item -h
|
|
|
|
Print a help message and exit. When you specify C<-h>, it ignores all
|
|
of the other options and arguments.
|
|
|
|
=item -i module [ module ... ]
|
|
|
|
Install the specified modules. With no other switches, this switch
|
|
is implied.
|
|
|
|
=item -I
|
|
|
|
Load C<local::lib> (think like C<-I> for loading lib paths). Too bad
|
|
C<-l> was already taken.
|
|
|
|
=item -j Config.pm
|
|
|
|
Load the file that has the CPAN configuration data. This should have the
|
|
same format as the standard F<CPAN/Config.pm> file, which defines
|
|
C<$CPAN::Config> as an anonymous hash.
|
|
|
|
=item -J
|
|
|
|
Dump the configuration in the same format that CPAN.pm uses. This is useful
|
|
for checking the configuration as well as using the dump as a starting point
|
|
for a new, custom configuration.
|
|
|
|
=item -l
|
|
|
|
List all installed modules with their versions
|
|
|
|
=item -L author [ author ... ]
|
|
|
|
List the modules by the specified authors.
|
|
|
|
=item -m
|
|
|
|
Make the specified modules.
|
|
|
|
=item -M mirror1,mirror2,...
|
|
|
|
A comma-separated list of mirrors to use for just this run. The C<-P>
|
|
option can find them for you automatically.
|
|
|
|
=item -n
|
|
|
|
Do a dry run, but don't actually install anything. (unimplemented)
|
|
|
|
=item -O
|
|
|
|
Show the out-of-date modules.
|
|
|
|
=item -p
|
|
|
|
Ping the configured mirrors and print a report
|
|
|
|
=item -P
|
|
|
|
Find the best mirrors you could be using and use them for the current
|
|
session.
|
|
|
|
=item -r
|
|
|
|
Recompiles dynamically loaded modules with CPAN::Shell->recompile.
|
|
|
|
=item -s
|
|
|
|
Drop in the CPAN.pm shell. This command does this automatically if you don't
|
|
specify any arguments.
|
|
|
|
=item -t module [ module ... ]
|
|
|
|
Run a `make test` on the specified modules.
|
|
|
|
=item -T
|
|
|
|
Do not test modules. Simply install them.
|
|
|
|
=item -u
|
|
|
|
Upgrade all installed modules. Blindly doing this can really break things,
|
|
so keep a backup.
|
|
|
|
=item -v
|
|
|
|
Print the script version and CPAN.pm version then exit.
|
|
|
|
=item -V
|
|
|
|
Print detailed information about the cpan client.
|
|
|
|
=item -w
|
|
|
|
UNIMPLEMENTED
|
|
|
|
Turn on cpan warnings. This checks various things, like directory permissions,
|
|
and tells you about problems you might have.
|
|
|
|
=item -x module [ module ... ]
|
|
|
|
Find close matches to the named modules that you think you might have
|
|
mistyped. This requires the optional installation of Text::Levenshtein or
|
|
Text::Levenshtein::Damerau.
|
|
|
|
=item -X
|
|
|
|
Dump all the namespaces to standard output.
|
|
|
|
=back
|
|
|
|
=head2 Examples
|
|
|
|
# print a help message
|
|
cpan -h
|
|
|
|
# print the version numbers
|
|
cpan -v
|
|
|
|
# create an autobundle
|
|
cpan -a
|
|
|
|
# recompile modules
|
|
cpan -r
|
|
|
|
# upgrade all installed modules
|
|
cpan -u
|
|
|
|
# install modules ( sole -i is optional )
|
|
cpan -i Netscape::Booksmarks Business::ISBN
|
|
|
|
# force install modules ( must use -i )
|
|
cpan -fi CGI::Minimal URI
|
|
|
|
# install modules but without testing them
|
|
cpan -Ti CGI::Minimal URI
|
|
|
|
=head2 Environment variables
|
|
|
|
There are several components in CPAN.pm that use environment variables.
|
|
The build tools, L<ExtUtils::MakeMaker> and L<Module::Build> use some,
|
|
while others matter to the levels above them. Some of these are specified
|
|
by the Perl Toolchain Gang:
|
|
|
|
Lancaster Consensus: L<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md>
|
|
|
|
Oslo Consensus: L<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/oslo-consensus.md>
|
|
|
|
=over 4
|
|
|
|
=item NONINTERACTIVE_TESTING
|
|
|
|
Assume no one is paying attention and skips prompts for distributions
|
|
that do that correctly. C<cpan(1)> sets this to C<1> unless it already
|
|
has a value (even if that value is false).
|
|
|
|
=item PERL_MM_USE_DEFAULT
|
|
|
|
Use the default answer for a prompted questions. C<cpan(1)> sets this
|
|
to C<1> unless it already has a value (even if that value is false).
|
|
|
|
=item CPAN_OPTS
|
|
|
|
As with C<PERL5OPT>, a string of additional C<cpan(1)> options to
|
|
add to those you specify on the command line.
|
|
|
|
=item CPANSCRIPT_LOGLEVEL
|
|
|
|
The log level to use, with either the embedded, minimal logger or
|
|
L<Log::Log4perl> if it is installed. Possible values are the same as
|
|
the C<Log::Log4perl> levels: C<TRACE>, C<DEBUG>, C<INFO>, C<WARN>,
|
|
C<ERROR>, and C<FATAL>. The default is C<INFO>.
|
|
|
|
=item GIT_COMMAND
|
|
|
|
The path to the C<git> binary to use for the Git features. The default
|
|
is C</usr/local/bin/git>.
|
|
|
|
=back
|
|
|
|
=head1 EXIT VALUES
|
|
|
|
The script exits with zero if it thinks that everything worked, or a
|
|
positive number if it thinks that something failed. Note, however, that
|
|
in some cases it has to divine a failure by the output of things it does
|
|
not control. For now, the exit codes are vague:
|
|
|
|
1 An unknown error
|
|
|
|
2 The was an external problem
|
|
|
|
4 There was an internal problem with the script
|
|
|
|
8 A module failed to install
|
|
|
|
=head1 TO DO
|
|
|
|
* one shot configuration values from the command line
|
|
|
|
=head1 BUGS
|
|
|
|
* none noted
|
|
|
|
=head1 SEE ALSO
|
|
|
|
Most behaviour, including environment variables and configuration,
|
|
comes directly from CPAN.pm.
|
|
|
|
=head1 SOURCE AVAILABILITY
|
|
|
|
This code is in Github in the CPAN.pm repository:
|
|
|
|
https://github.com/andk/cpanpm
|
|
|
|
The source used to be tracked separately in another GitHub repo,
|
|
but the canonical source is now in the above repo.
|
|
|
|
=head1 CREDITS
|
|
|
|
Japheth Cleaver added the bits to allow a forced install (-f).
|
|
|
|
Jim Brandt suggest and provided the initial implementation for the
|
|
up-to-date and Changes features.
|
|
|
|
Adam Kennedy pointed out that exit() causes problems on Windows
|
|
where this script ends up with a .bat extension
|
|
|
|
=head1 AUTHOR
|
|
|
|
brian d foy, C<< <bdfoy@cpan.org> >>
|
|
|
|
=head1 COPYRIGHT
|
|
|
|
Copyright (c) 2001-2015, brian d foy, All Rights Reserved.
|
|
|
|
You may redistribute this under the same terms as Perl itself.
|
|
|
|
=cut
|
|
|
|
1;
|