cvsuser     05/01/14 08:28:30

  Modified:    App-Options/lib/App Options.pm
  Log:
  version option cleaned up
  
  Revision  Changes    Path
  1.13      +68 -17    p5ee/App-Options/lib/App/Options.pm
  
  Index: Options.pm
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Options/lib/App/Options.pm,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Options.pm        14 Jan 2005 14:01:07 -0000      1.12
  +++ Options.pm        14 Jan 2005 16:28:29 -0000      1.13
  @@ -1,6 +1,6 @@
   
   #############################################################################
  -## $Id: Options.pm,v 1.12 2005/01/14 14:01:07 spadkins Exp $
  +## $Id: Options.pm,v 1.13 2005/01/14 16:28:29 spadkins Exp $
   #############################################################################
   
   package App::Options;
  @@ -395,6 +395,8 @@
       # Put the var/value pairs in %$values
       #################################################################
       my $debug_options = $values->{debug_options} || 0;
  +    my $show_help = 0;
  +    my $show_version = 0;
       if (! $init_args{no_cmd_args}) {
           while ($#ARGV >= 0 && $ARGV[0] =~ /^--?([^=-][^=]*)(=?)(.*)/) {
               $var = $1;
  @@ -405,6 +407,18 @@
           if ($#ARGV >= 0 && $ARGV[0] eq "--") {
               shift @ARGV;
           }
  +        if ($values->{help}) {
  +            $show_help = 1;
  +            delete $values->{help};
  +        }
  +        elsif ($values->{"?"}) {
  +            $show_help = 1;
  +            delete $values->{"?"};
  +        }
  +        elsif ($values->{version}) {
  +            $show_version = $values->{version};
  +            delete $values->{version};
  +        }
           $debug_options = $values->{debug_options} || 0;
           print STDERR "1. Parsed Command Line Options. [EMAIL PROTECTED]" if 
($debug_options);
       }
  @@ -878,8 +892,8 @@
       # 11. print version information (--version)
       #################################################################
   
  -    if ($values->{version}) {
  -        &print_version($prog_file, $values);
  +    if ($show_version) {
  +        &print_version($prog_file, $show_version, $values);
           exit(0);
       }
   
  @@ -888,7 +902,7 @@
       #################################################################
   
       my $exit_status = -1;
  -    if ($values->{"?"} || $values->{help}) {
  +    if ($show_help) {
           $exit_status = 0;
       }
   
  @@ -1032,7 +1046,7 @@
   }
   
   sub print_version {
  -    my ($prog_file, $values) = @_;
  +    my ($prog_file, $show_version, $values) = @_;
       print "Program: $prog_file\n";
       print "(use --version_packages to see version info for specific perl 
packages)\n";
       my ($module, $package, $version, $full_path);
  @@ -1082,7 +1096,7 @@
           $package =~ s/\.p[lm]$//;
           $package =~ s!/!::!g;
   
  -        if ($values->{version_packages} && $values->{version} eq "1") {
  +        if ($values->{version_packages} && $show_version ne "all") {
               $show_module = 0;
               foreach my $package_pattern (@package_pattern) {
                   if ($package =~ /$package_pattern/) {
  @@ -1469,22 +1483,59 @@
   
   =head2 Version
   
  -If the "--version" option is set on the command line,
  -the version information for the loaded modules is printed,
  -and the program is exited.
  +After all values have been parsed, various conditions are
  +checked to see if the program should print diagnostic information
  +rather than continue running.  Two of these examples are --version
  +and --help.
   
  -If additional modules should be loaded so that their version
  -number can be ascertained, use the --version_packages option.
  +If the "--version" option is set on the command line,
  +the version information for all loaded modules is printed,
  +and the program is exited.  (The version of a package/module is
  +assumed to be the value of the $VERSION variable in that package.
  +i.e. The version of the XYZ::Foo package is $XYZ::Foo::VERSION.)
   
      prog --version
  -   prog --version --version_packages=CGI
  -   prog --version --version_packages=CGI,Template
   
  -=head2 Help and Validations
  +Of course, this is all done implicitly in the BEGIN block (during
  +"use App::Options;").  If your program tried to set
  +$main::VERSION, it may not be set unless it is set explicitly
  +in the BEGIN block.
  +
  + #!/usr/bin/perl
  + BEGIN {
  +   $VERSION = "1.12";
  + }
  + use App::Options;
  +
  +This can be integrated with CVS file versioning using something 
  +like the following.
  +
  + #!/usr/bin/perl
  + BEGIN {
  +   $VERSION = do { my @r=(q$Revision: 1.13 $=~/\d+/g); sprintf 
"%d."."%02d"x$#r,@r};
  + }
  + use App::Options;
  +
  +Furthermore, the version information about some modules that you
  +might expect to have seen will not be printed because those modules
  +have not yet been loaded.  To fix this, use the --version_packages
  +option (or set it in an option file).  This option contains a
  +comma-separated list of modules and/or module regular expressions.
  +The modules are loaded, and the version information from all
  +resulting packages that match any of the patterns is printed.
  +
  + prog --version --version_packages=CGI
  + prog --version --version_packages=CGI,Template
  +
  +This also cuts down on the miscellaneous
  +modules (and pragmas) which might have cluttered up your view
  +of the version information you were interested in.
  +If you really wish to see version information for all
  +modules, use the --version=all option.
   
  -After all values have been parsed, various conditions are
  -checked to see if the program should not continue and the
  -usage statement be printed out.
  + prog --version=all --version_packages=CGI,Template
  +
  +=head2 Help and Validations
   
   If the "-?" or "--help" options were set on the command line,
   the usage statement is printed, and the program is exited.
  
  
  

Reply via email to