############################################################################# # CHANGE LOG ############################################################################# VERSION 1.03 x better use of /\s*/ instead of / */ so that tabs don't catch you off-guard x enable application use of App::Options objects to read additional data structures * $option_processor = App::Options->new(@args); * $option_processor->read_option_files(\%values, [$file]); x allow for subclassing (App::Options::YAML, etc.) * made App::Options object-oriented to allow for subclassing * split read_option_files() method out of the read_options() method (for subclassing) x save the import arguments for later print_usage or later reparsing (as $self->{init_args}) VERSION 1.02 x ENV{FOO} = x in app.conf sets environment variable "FOO" (i.e. LD_LIBRARY_PATH) x added perl_restart option to re-exec() the program so that it picks up a new LD_LIBRARY_PATH x save original @ARGV to @App::Options::ARGV (used for perl_restart/re-exec()) x line continuation characters strip off newlines and leading spaces VERSION 1.01 x removed dependency in Makefile.PL on Config.pm (which was causing a false error on "make test") VERSION 1.00 x clean up for v1.00. no dependency on Module::Build (which has been giving problems) x add default values for MANPATH, LD_LIBRARY_PATH to bin/prefix x added t/file.txt so the test process doesn't spew warnings VERSION 0.99 x fixed a condition that didn't work on Windows when executing in current dir x fix double slash /usr/rubicon/test/bin//app.conf x improved --debug_options, --debug_options=[1-7] output VERSION 0.98 x disabled some tests that cause failure on MSWin32 VERSION 0.97 x enable "here documents", var = <" rather than "--var=" x usage: "args_description" describes what's left on cmd line after options removed x usage: "value_description" describes option value (instead of "") x added an examples directory x added a benchmark directory x default is $Config{prefix} instead of /usr/local x improve debug_options (env vars, etc.) (implemented 6 levels of debug_options) 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 x touched up titles on pod documentation x implement import() method to use module outside the BEGIN block (i.e. use App::Options (@args)) x update documentation with new syntax using import() method x improve show_all logic: show_all = 1 by default always unless overridden VERSION 0.63 x improve documentation (api reference, logic flow, usage tutorial) x "integer" type now matches integers with underscores (i.e. 1_000_000) x "float" type now matches numbers with underscores (i.e. 1_000.000_001) x added /etc/app/app.conf to the end of the option file search path x default "prefix" is now "/usr/local" instead of "." x {env} attribute of "" means don't search any env variable VERSION 0.62 x [prog] matches "prog" only. [/prog/] matches by regular expression. In version 0.61, the section [list] would match ($app =~ /list/). In version 0.62, the section [list] only matches ($app eq "list"), while [/list/] matches ($app =~ /list/). x type="/regexp/" matches regexp. unknown types ignored. In version 0.61, an option type which was not one of the known option types (integer, float, date, datetime, etc.), was considered automatically as a regular expression. In version 0.62, only types which take the form "/regexp/" are actually regular expressions. All other unknown "types" are ignored. This sets the groundwork for better forward-compatibility when new types are introduced, they will not break older versions of the code. It also just seems clearer. x "show_all" option - shows all defined options, not just in [ options ] In version 0.61, the --help option would show all variables defined in the code, on the command line, or in any of the files (i.e.show_all=1). However, if the "options" argument is used in the init() method in the code, only those enumerated options would be shown (i.e. show_all=0). In version 0.62, the same behavior applies unless the "show_all" parameter is given explicitly. x quoting, var = " hello world " In version 0.61, variable values in the option file had leading and trailing spaces removed. This meant that a value of a single space was not possible. In version 0.62, the same behavior applies. However, if the remaining text starts with " and ends with ", those quote marks are removed. i.e. var = " " will result in the value of a single space, and message = "Hello world. " will have a trailing space. x check list of configurable environment vars ("env") instead of "APP_${uc_var}" In version 0.61, variable values could be supplied by specifying the variable prefixed with "APP_". (i.e. "path" could be specified with "APP_PATH") In version 0.62, a list of environment variable names may be given and the first with a supplied value is used for the value. (i.e. options => { path => { env => "PATH" } } will cause the "path" variable to be set from the "PATH" environment variable.) VERSION 0.61 x Initial release