cvs commit: p5ee/App-Options CHANGES Makefile.PL README TODO

[email protected] (Stephen Adkins)
Newsgroups perl.cvs.p5ee
Message-ID <[email protected]>
cvsuser     04/09/02 14:09:00

  Modified:    App-Options CHANGES Makefile.PL README TODO
  Log:
  updated
  
  Revision  Changes    Path
  1.6       +7 -0      p5ee/App-Options/CHANGES
  
  Index: CHANGES
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Options/CHANGES,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -w -r1.5 -r1.6
  --- CHANGES	19 Feb 2004 16:17:14 -0000	1.5
  +++ CHANGES	2 Sep 2004 21:09:00 -0000	1.6
  @@ -2,6 +2,13 @@
   # CHANGE LOG
   #############################################################################
   
  +VERSION 0.91
  + x show_all is off by default whenever "option" or "options" used
  + x remove app_path_info
  +
  +VERSION 0.90
  + x new "use App::Options (...);" syntax (rather than ->init(...) syntax)
  +
   VERSION 0.64
    x added $VERSION to App::Options (use VERSION_FROM in Makefile.PL)
    x fixed bug where "show_all" wasn't showing all on --help
  
  
  
  1.6       +2 -3      p5ee/App-Options/Makefile.PL
  
  Index: Makefile.PL
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Options/Makefile.PL,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -w -r1.5 -r1.6
  --- Makefile.PL	9 Feb 2004 22:03:50 -0000	1.5
  +++ Makefile.PL	2 Sep 2004 21:09:00 -0000	1.6
  @@ -1,6 +1,6 @@
   
   ######################################################################
  -## File: $Id: Makefile.PL,v 1.5 2004/02/09 22:03:50 spadkins Exp $
  +## File: $Id: Makefile.PL,v 1.6 2004/09/02 21:09:00 spadkins Exp $
   ######################################################################
   
   use ExtUtils::MakeMaker;
  @@ -14,8 +14,7 @@
   %opts = (
       'NAME'         => 'App-Options',
       'DISTNAME'     => 'App-Options',
  -    #'VERSION'      => '0.00',  # not used
  -    'VERSION_FROM' => 'lib/App/Options.pm',
  +    'VERSION'      => '0.91',
       'EXE_FILES'    => [ @programs ],
       'dist'         => {'COMPRESS'=>'gzip -9f', 'SUFFIX' => 'gz',
                         'ZIP'=>'/usr/bin/zip','ZIPFLAGS'=>'-rl'},
  
  
  
  1.3       +45 -33    p5ee/App-Options/README
  
  Index: README
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Options/README,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -w -r1.2 -r1.3
  --- README	7 Jan 2004 15:24:07 -0000	1.2
  +++ README	2 Sep 2004 21:09:00 -0000	1.3
  @@ -1,12 +1,13 @@
   ######################################################################
  -## File: $Id: README,v 1.2 2004/01/07 15:24:07 spadkins Exp $
  +## File: $Id: README,v 1.3 2004/09/02 21:09:00 spadkins Exp $
   ######################################################################
   
   1. What is the App-Options distribution?
   
  -The App-Options distribution is "yet another command line processor."
  -However, it was created for maximum ease of use with the needs of
  -the Perl 5 Enterprise Environment in mind (more on that later).
  +You might say App-Options distribution is "yet another command line
  +option processor."  However, it was created for maximum ease of use
  +with the needs of the Perl 5 Enterprise Environment in mind
  +(more on that later).
   
   The distribution consists of one Perl module and one shell script.
   
  @@ -19,6 +20,8 @@
          a family of environment variables (PATH, LD_LIBRARY_PATH,
          MANPATH, etc.) necessary for running programs out of a
          directory in which software has been installed.
  +       (This script is useful but not necessary, and non-Unix users
  +       may safely ignore it.)
   
   2. What are the features?
   
  @@ -39,8 +42,8 @@
      the "whatever = value" statement.  Initialization searches
      "$HOME/.app/$prog.conf", "$HOME/.app/app.conf",
      "$progdir/$prog.conf", "$progdir/app.conf",
  -   "$prefix/$prog.conf", and "$prefix/app.conf" in order
  -   to find the option values.
  +   "$prefix/$prog.conf", "$prefix/app.conf", and "/etc/app.conf"
  +   in order to find the option values.
    o Import other files with "import = filename" statement
      Config files can, in essence, include other config files.
    o Stop importing other files with "flush_imports = 1" statement
  @@ -63,11 +66,10 @@
      Any section specifier can apply only to a single line by
      putting a statement after it. "[city=LAX] state = CA"
    o Modify @INC variable with the "perlinc = path1,path2" statement
  -   If invoked in the BEGIN block, this allows the person deploying
  -   the software to set up the Perl include path so that a
  -   particular version of the software installed on the system is
  -   used.  Subsequent uses of "use" and "require" will load modules
  -   from the configured locations.
  +   This allows the person deploying the software to set up the Perl
  +   include path so that a particular version of the software
  +   installed on the system is used.  Subsequent uses of "use" and
  +   "require" will load modules from the configured locations.
    o Validate that "required" options are provided
      Certain options can be identified as required. Otherwise the
      program will not run.
  @@ -120,41 +122,51 @@
   Then it grew into a full-fledged command line, environment
   variable, and config file value option processor.
   
  -In retrospect, I don't really know whether or not the other
  -modules can run just as well in a BEGIN block and have a special
  -feature to modify @INC.  However, this met a primary design
  -goal of App::Options.
  -
   I did try Getopt::Long, but it wasn't that easy to use, you had
   to code your own "--help" feature, and it didn't incorporate
   environment variables or config files.  I wanted something
   more high-level and full-featured, so I wrote App::Options.
   
  -I looked at the description of the AppConfig distribution,
  -and it sounds similar to what I describe here.  However,
  -the meaning of "sections" (i.e. "[cleanup]") is a conditional
  -construct in App::Options.  Thus, it supports a single
  -family of configuration files to configure a whole suite
  -of programs and scripts. (Each program can have its own
  -section, and optionally its own file in both "user" and
  -"system" places.)  This met design goal #2.
  -
  -See the section below on ease of use for design goal #3.
  +The description of the AppConfig distribution sounds similar
  +to what is described here.  However, the following are the key
  +differences.
  +
  + * App::Options does its option processing in the BEGIN block.
  +   This allows for the @INC variable to be modified in time
  +   for subsequent "use" and "require" statements.
  +   This met design goal #1.
  +
  + * App::Options consults a cascading set of option files.
  +   These files include those which are system global, project
  +   global, and user private.  This allows for system
  +   administrators, project developers, and in individual
  +   users to all have complementary roles on defining
  +   the configuration values.  This met design goal #2.
  +
  + * App::Options "sections" (i.e. "[cleanup]") are conditional.
  +   It is conditional in App::Options, allowing you to use one
  +   set of option files to configure an entire suite of programs
  +   and scripts.  In AppConfig, the section name is simply a 
  +   prefix which gets prepended to subsequest option names.
  +   This also helped to meet design goal #2.
  +
  + * App::Options is not a toolkit but a standardized way of
  +   doing option processing.  With AppConfig, you still have
  +   to decide where to put config files, you still have to
  +   code the "--help" feature, etc.  With App::Options, you simply
  +   "use App::Options;" and all the hard work is done.
  +   Advanced options can be added later as necessary as args
  +   to the "use" statement.  This met design goal #3.
   
   Design goal #4 required the autodetection of the ${prefix}
  -variable.  Thus, the App::Options module is integrated with
  +variable.  Thus, the App::Options module can be integrated with
   the discipline of choosing a root directory for your
   software installation (i.e. PREFIX=/usr/mycompany/2.0.12).
   
   5. You say it's so easy. Show me.
   
     #!/usr/bin/perl
  -
  -  BEGIN {
         use App::Options;
  -      App::Options->init();
  -  }
  -
     # now use the %App::options hash
     print "yada yada\n" if ($App::options{verbose});
   
  
  
  
  1.7       +10 -4     p5ee/App-Options/TODO
  
  Index: TODO
  ===================================================================
  RCS file: /cvs/public/p5ee/App-Options/TODO,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -w -r1.6 -r1.7
  --- TODO	19 Feb 2004 16:17:14 -0000	1.6
  +++ TODO	2 Sep 2004 21:09:00 -0000	1.7
  @@ -1,20 +1,25 @@
   ######################################################################
  -## File: $Id: TODO,v 1.6 2004/02/19 16:17:14 spadkins Exp $
  +## File: $Id: TODO,v 1.7 2004/09/02 21:09:00 spadkins Exp $
   ######################################################################
   
   These items are what will be required to go to version 1.00.
    o use File::Spec to make file/directory manipulation platform-independent
   
  -These are other interesting things
  +These are other interesting things which I might do
  + o add option that documents the args (not just the options) of a command
    o here documents, var = <<EOF
  - o line continuation chars, i.e. var = hello \
  -world
  + o file variables, var = <FILE>filename (or "cmd|")
  + o add a standard ${host} variable
  + o line continuation chars, i.e. var = hello \\nworld
  + o auto-import of environment vars named "APP_*"
  + o multiple levels of "show_all"
    o make lots more tests (starting with the examples in the documentation)
    o substitute environment vars with "$ENV{PATH}"
    o setenv arg to set environment variables
    o make example scripts (starting with the examples in the documentation)
    o add --version support (print out own version and versions of all modules)
    o add "arg" option attribute for the name of the option argument
  + o add "args_description" arg to describe what's left on cmd line after options removed
    o improve debug_options (env vars, etc.)
    o enforce other option parsing rules (single letter + arg, single/double dash)
    o option aliases/synonyms/alternates (i.e. -s = --silent)
  @@ -28,4 +33,5 @@
    o write "prefix.pod"
    o try use lib "dir"; instead of unshift(@INC,"dir") (interaction with "arch")
    o consider checking the PERL5LIB variable under -T
  + o allow for subclassing (App::Options::YAML, etc.) (split up the init() method)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.