#!/usr/bin/perl -w
use strict;
use warnings;
use CPAN::Mini::App;
CPAN::Mini::App->run;

# PODNAME: minicpan
# ABSTRACT: uses CPAN::Mini to create or update a local mirror

=pod

=encoding UTF-8

=head1 NAME

minicpan - uses CPAN::Mini to create or update a local mirror

=head1 VERSION

version 1.111016

=head1 SYNOPSIS

 minicpan [options]

 Options
   -l LOCAL    - where is the local minicpan?     (required)
   -r REMOTE   - where is the remote cpan mirror? (required)
   -d 0###     - permissions (numeric) to use when creating directories
   -f          - check all directories, even if indices are unchanged
   -p          - mirror perl, ponie, and parrot distributions
   --debug     - run in debug mode (print even banal messages)
   -q          - run in quiet mode (don't print status)
   -qq         - run in silent mode (don't even print warnings)
   -c CLASS    - what class to use to mirror (default: CPAN::Mini)
   -C FILE     - what config file to use (default: ~/.minicpanrc)
   -h          - print help and exit
   -v          - print version and exit
   -x          - build an exact mirror, getting even normally disallowed files
   -t SEC      - timeout in sec. Defaults to 180 sec
   --offline   - operate in offline mode (generally: do nothing)
   --log-level - provide a log level; instead of --debug, -q, or -qq
   --remote-from TYPE - cpan remote from 'cpan' or 'cpanplus' configs

=head1 DESCRIPTION

This simple shell script just updates (or creates) a miniature CPAN mirror as
described in CPAN::Mini.

=head1 CONFIGURATION FILE

By default, C<minicpan> will read a configuration file to get configuration
information.  The file is a simple set of names and values, as in the following
example:

 local:  /home/rjbs/mirrors/minicpan/
 remote: http://your.favorite.cpan/cpan/
 exact_mirror: 1

C<minicpan> tries to find a configuration file through the following process.
It takes the first defined it finds:

=over 4

=item * Use the value specified by C<-C> on the command line

=item * Use the value in the C<CPAN_MINI_CONFIG> environment variable

=item * Use F<~/.minicpanrc>

=item * Use F<CPAN/Mini/minicpan.conf>

=back

If the selected file does not exist, C<minicpan> does not keep looking.

You can override this process with a C<config_file> method in your subclass.

See C<CPAN::Mini> for a full listing of available options.

=head1 TO DO

Improve command-line options.

=head1 SEE ALSO 

Randal Schwartz's original article, which can be found here:

  http://www.stonehenge.com/merlyn/LinuxMag/col42.html

=head1 AUTHORS

=over 4

=item *

Ricardo SIGNES <rjbs@cpan.org>

=item *

Randal Schwartz <merlyn@stonehenge.com>

=back

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2004 by Ricardo SIGNES.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut

__END__

#pod =head1 SYNOPSIS
#pod
#pod  minicpan [options]
#pod
#pod  Options
#pod    -l LOCAL    - where is the local minicpan?     (required)
#pod    -r REMOTE   - where is the remote cpan mirror? (required)
#pod    -d 0###     - permissions (numeric) to use when creating directories
#pod    -f          - check all directories, even if indices are unchanged
#pod    -p          - mirror perl, ponie, and parrot distributions
#pod    --debug     - run in debug mode (print even banal messages)
#pod    -q          - run in quiet mode (don't print status)
#pod    -qq         - run in silent mode (don't even print warnings)
#pod    -c CLASS    - what class to use to mirror (default: CPAN::Mini)
#pod    -C FILE     - what config file to use (default: ~/.minicpanrc)
#pod    -h          - print help and exit
#pod    -v          - print version and exit
#pod    -x          - build an exact mirror, getting even normally disallowed files
#pod    -t SEC      - timeout in sec. Defaults to 180 sec
#pod    --offline   - operate in offline mode (generally: do nothing)
#pod    --log-level - provide a log level; instead of --debug, -q, or -qq
#pod    --remote-from TYPE - cpan remote from 'cpan' or 'cpanplus' configs
#pod
#pod =head1 DESCRIPTION
#pod
#pod This simple shell script just updates (or creates) a miniature CPAN mirror as
#pod described in CPAN::Mini.
#pod
#pod =head1 CONFIGURATION FILE
#pod
#pod By default, C<minicpan> will read a configuration file to get configuration
#pod information.  The file is a simple set of names and values, as in the following
#pod example:
#pod
#pod  local:  /home/rjbs/mirrors/minicpan/
#pod  remote: http://your.favorite.cpan/cpan/
#pod  exact_mirror: 1
#pod  
#pod C<minicpan> tries to find a configuration file through the following process.
#pod It takes the first defined it finds:
#pod
#pod =over 4
#pod
#pod =item * Use the value specified by C<-C> on the command line
#pod
#pod =item * Use the value in the C<CPAN_MINI_CONFIG> environment variable
#pod
#pod =item * Use F<~/.minicpanrc>
#pod
#pod =item * Use F<CPAN/Mini/minicpan.conf>
#pod
#pod =back
#pod
#pod If the selected file does not exist, C<minicpan> does not keep looking.
#pod
#pod You can override this process with a C<config_file> method in your subclass.
#pod
#pod See C<CPAN::Mini> for a full listing of available options.
#pod
#pod =head1 TO DO
#pod
#pod Improve command-line options.
#pod
#pod =head1 SEE ALSO 
#pod
#pod Randal Schwartz's original article, which can be found here:
#pod
#pod   http://www.stonehenge.com/merlyn/LinuxMag/col42.html
#pod
#pod =cut