package ExtUtils::ModuleMaker::Opts; #$Id: Opts.pm 1153 2007-03-28 00:06:01Z jimk $ use strict; local $^W = 1; use vars qw( $VERSION ); $VERSION = 0.51; use Getopt::Std; $Getopt::Std::STANDARD_HELP_VERSION = 1; use Carp; my %opts; getopts( "bhqsCIPVcn:a:v:l:u:p:o:w:e:t:r:d:", \%opts ); sub new { my $class = shift; my $eumm_package = shift; my $eumm_script = shift; my $self = bless( {}, $class ); $self->{NAME} = $class; { eval "require $eumm_package"; no strict 'refs'; $self->{VERSION} = ${$eumm_package . "::VERSION"}; } $self->{PACKAGE} = $eumm_package; $self->{SCRIPT} = $eumm_script; my %standard_options = ( ( ( $opts{c} ) ? ( COMPACT => $opts{c} ) : () ), ( ( $opts{V} ) ? ( VERBOSE => $opts{V} ) : () ), ( ( $opts{C} ) ? ( CHANGES_IN_POD => $opts{C} ) : () ), ( ( $opts{P} ) ? ( NEED_POD => 0 ) : () ), ( ( $opts{q} ) ? ( NEED_NEW_METHOD => 0 ) : () ), # ( ( $opts{I} ) ? ( INTERACTIVE => 0 ) : 1 ), INTERACTIVE => ( ( $opts{I} ) ? 0 : 1 ), ( ( $opts{s} ) ? ( SAVE_AS_DEFAULTS => $opts{s} ) : () ), ( ( $opts{n} ) ? ( NAME => $opts{n} ) : () ), ( ( $opts{a} ) ? ( ABSTRACT => $opts{a} ) : () ), ( ( $opts{b} ) ? ( BUILD_SYSTEM => $opts{b} ) : () ), ( ( $opts{v} ) ? ( VERSION => $opts{v} ) : () ), ( ( $opts{l} ) ? ( LICENSE => $opts{l} ) : () ), ( ( $opts{u} ) ? ( AUTHOR => $opts{u} ) : () ), ( ( defined $opts{p} ) ? ( CPANID => $opts{p} ) : () ), ( ( defined $opts{o} ) ? ( ORGANIZATION => $opts{o} ) : () ), ( ( defined $opts{w} ) ? ( WEBSITE => $opts{w} ) : () ), ( ( $opts{e} ) ? ( EMAIL => $opts{e} ) : () ), ( ( $opts{r} ) ? ( PERMISSIONS => $opts{r} ) : () ), ( ( $opts{d} ) ? ( ALT_BUILD => $opts{d} ) : () ), USAGE_MESSAGE => Usage( $self->{SCRIPT}, $self->{PACKAGE}, $self->{VERSION}, ), ); $self->{STANDARD_OPTIONS} = { %standard_options }; return $self; } sub get_standard_options { my $self = shift; return %{ $self->{STANDARD_OPTIONS} }; } sub Usage { my ($script, $eumm_package, $eumm_version) = @_; my $message = < =head1 SYNOPSIS use ExtUtils::ModuleMaker::Opts; $eumm_package = q{ExtUtils::ModuleMaker}; $eumm_script = q{modulemaker}; $opt = ExtUtils::ModuleMaker::Opts->new( $eumm_package, $eumm_script, ); $mod = ExtUtils::ModuleMaker::Interactive->new( $opt->get_standard_options() ); =head1 DESCRIPTION The methods in this package provide processing of command-line options for F, the command-line utility associated with Perl extension ExtUtils::ModuleMaker, and for similar utilities associated with Perl extensions which subclass ExtUtils::ModuleMaker. =head1 METHODS =head2 C Usage : $opt = ExtUtils::ModuleMaker::Opts->new($package,$script) from inside a command-line utility such as modulemaker Purpose : Creates an ExtUtils::ModuleMaker::Opts object Returns : An ExtUtils::ModuleMaker::Opts object Argument : Two arguments: 1. String holding 'ExtUtils::ModuleMaker' or a package subclassed therefrom, e.g., 'ExtUtils::ModuleMaker::PBP'. 2. String holding 'modulemaker' or the name of a command-line utility similar to 'modulemaker' and found in the 'scripts/' directory of the distribution named in argument 1 =head2 C Usage : %standard_options = $opt->get_standard_options from inside a command-line utility such as modulemaker Purpose : Provide arguments to ExtUtils::ModuleMaker::Interactive::new() or to the constructor of the 'Interactive' package of a distribution subclassing ExtUtils::ModuleMaker Returns : A hash suitable for passing to ExtUtils::ModuleMaker::Interactive::new() or similar constructor Argument : n/a =head1 SEE ALSO F, F, F, F, F. =cut