Revision history for App-Env
1.04 2024-01-19 12:56:35-05:00 America/New_York
[BUG FIX]
* correct handling of case where environment module was not
found. a return of undef was expected, but instead a boolean was
returned.
1.03 2024-01-18 12:22:09-05:00 America/New_York
[BUG FIX]
* By default the str() method and string overloading no longer
include environment variables with illegal names. Use the new
AllowIllegalVariableNames option to true.
[ENHANCEMNT]
1.02 2022-10-15 12:44:10-04:00 America/New_York
[BUGFIX]
* previous conversion from die to croak wasn't complete
1.01 2022-07-06 18:59:44-04:00 America/New_York
[BUGFIX]
* The Site parameter to import() or new() can ignore (rather than
replace) the default Site specification if it is set to undef or
''; this was not properly documented or implemented.
1.00 2022-07-06 18:08:33-04:00 America/New_York
[API BREAKAGE]
* Documentation of how the APP_ENV_SITE environment
variable interacted with the Site parameter was
incomplete and incorrect.
* The Site parameter was used to *add* to the list of modules to
try, not to replace what was specified via $ENV{APP_ENV_SITE}.
So, if
$ENV{APP_ENV_SITE} = 'Site1';
and Site => 'Site2', then loading the MyApp environment would
scan for the first of
App::Env::Site1::MyApp;
App::Env::Site2::MyApp;
App::Env::MyApp;
rather than the expected
App::Env::Site2::MyApp;
App::Env::MyApp;
* App::Env::Site was loaded when App::Env is loaded if
$ENV{APP_ENV_SITE} was not set, but the resultant
$ENV{APP_ENV_SITE} was not cached. This resulted
in action-at-a-distance weirdness. Assume that
the App::Env::Site package exists and sets
$ENV{APP_ENV_SITE} = 'Site1';
Then this code causes hard to debug bugs:
{
local %ENV = %ENV;
require App::Env;
# This will load App::Env::Site and thus load App::Env::Site1::MyApp1
App::Env::import( 'MyApp1' );
}
# This will NOT load App::Env::Site, as it has already been loaded,
# but the environment no longer contains $ENV{APP_ENV_SITE}, this
# this will load App::Env::MyApp2, not App::Env::Site1::MyApp2
App::Env::import( 'MyApp2' );
This is just too fragile. Now when App::Env is loaded, it caches
the final version of $ENV{APP_ENV_SITE}. Code which needs to change
the site in mid-program, can use the Site parameter.
0.36 2022-07-05 16:38:55-04:00 America/New_York
[ENHANCEMENT]
* appexec:
* new option, --define, which specifies extra environment
variables to be addto to the application environment.
* new option, --delete, which specifies environment variables
to be deleted from the application environment.
* --dumpenv:
* new format, 'auto', which outputs the environment as
commands for the current shell
* now uses Shell::Config::Generate to generate commands
to set environment variables for shells
* new format, 'values', which outputs only environment
variable values
* new format, 'json', which outputs in JSON
* new format, 'delta-json', which outputs in JSON the
differences between the current and application
environments
* new format, 'delta-args', which outputs via appexec -D
and -X options the differences between the current and
application environments
* new option, --dumpvar, which specifies which environment
variables to dump
0.35 2020-05-04 11:14:40-04:00 America/New_York
[ENHANCMENT]
* new method, 'which', searches environment's path for executable
[BUILD]
* public repository is now on GitLab
0.34 2018-04-02 11:03:48-04:00 America/New_York
[BUG FIX]
* compilation of App::Env would fail if Capture::Tiny was
previously loaded
* uncaching via CacheID was broken
[BUILD]
* switch to Dist::Zilla
0.33 2016-07-13T12:16:55-0400
[BUG FIX]
* improper method call check in import()
[ENHANCEMENT]
* appexec
* new --clear option to clear the current environment prior to
loading a new environment
* multiple environments may be loaded
0.32 2016-07-07T12:50:00-0400
[BUG FIX]
* avoid warnings from appexec when environment variables have
no defined value
0.31 2016-07-06T17:26:56-0400
[BUG FIX]
* bash shell export support in version 0.30 wasn't complete;
it didn't produce output which could be eval'ed.
0.30 2016-07-06T17:11:43-0400
[BUG FIX]
* bash exports shell functions via special environment variables
with nominally illegal names. when dumping the environment for
bash, appexec will translate those variables into function
definitions instead of simply passing along the bogus variable
names, which causes bash to barf.
0.29 2016-03-16T13:37:06-0400
[BUG FIX]
* exceptions caught by App::Env were stringified when rethrown,
breaking calling code which might expect an exception object.
0.28 2015-05-21T10:55:07-0400
[BUILD]
* missing semicolon in Makefile.PL caused incomplete META.* files
to be written.
0.27 2015-05-20T17:22:12-0400
[BUILD]
* use cpanfile to manage dependencies
* move all author tests to xt
0.26 2012-03-29T15:47:34-0400
[ENHANCEMENT]
* added App::Env::Null module for "null" (i.e. current)
environment
0.25 2012-01-13T12:43:22-0400
[BUG FIX]
* qexec always acted as if it were being called in a scalar
context.
0.24 2010-06-07T17:14:37-0400
* the SysFatal option will now be passed on to cloned environments
created with the Temp option.
0.23 2010-06-07T16:44:26-0400
* capture() is no longer just an alias for qexec; it can now
return both stderr and stdout.
0.22 2010-06-03T12:44:43-0400
* if CacheID is the string 'AppID', the cache id does not take
into account the contents of the AppOpts hash.
* new feature from v. 0.20 2015-05-20T16:52:10-0400 AppOpts hash)
now actually works.
0.21 2010-06-02T10:28:42-0400
* no longer uses Object::ID to work around problems with
Hash::FieldHash and older perls.
0.20 2010-05-28T12:11:51-0400
* cached environments now keyed off of AppOpts hash
* (hopefully) improve Windows compatibility
0.15 2008-10-27T14:10:29-0400
* invert logic of shell magic characters; escape those not known to
good.
0.14 2008-07-11T21:17:02-0400
* escape more shell magic characters
0.13 2008-07-11T15:59:30-0400
* append semi-colons to appenv's dumpenv output so that shell
eval's will actually work
0.12 2008-07-11T13:31:09-0400
* appenv's dumpenv has more output formats. its value is now required.
previously it was optional, which led to its grabbing
the environment name if --env wasn't used. bad form.
0.11 2008-06-16T12:27:20-0400
* new setenv() method allows changing an environment.
0.10 2008-06-15T23:26:29-0400
* new SysFatal option which will cause system/qexec/capture object
methods to throw an exception on error. Uses
IPC::System::Simple in this case.
* Default option values may now be changed.
0.09 2008-03-22T22:44:32-0400
* lowercase aliasing failed if Site was not set.
0.08 2008-03-22T22:03:47-0400
* application module search is no longer sensitive to the case of
the application name
0.07 2008-03-22T13:19:29-0400
* application environments may now have aliases, which can preset
options
* site search was not done exactly according to specs
* improved method for searching for environment modules to
distinguish between non-existant modules and compilation errors
* env() (and now str() as well) can specify variables to include
in a more flexible fashion. the returned value is more flexible
(more context dependent) and excruciatingly documented.
* more restrictive str() generation of TERMCAP to make it easier
to exclude variables without needing to specify TERMCAP
0.06 2008-02-03T14:11:39-0400
* fix for multi-app environments
* application environments must now be based upon the current
environment
* cached application environments are not used in multi-app
environments, nor will individual environments be cached in the
course of creating a multi-app environment
0.05 2008-01-17T15:15:38-0400
* improve(?) documentation
* add appexec program
0.04 2007-08-17T17:02:34-0400
* clean up passing of AppOpts to app env module's envs() func
0.03 2007-08-17T12:26:32-0400
* remove dependency on Module::Load::Conditional
0.02 2007-08-16T17:10:27-0400
* work around lack of weak references in older perls
0.01 2007-07-26T17:39:40-0400
* original version; created by h2xs 1.23 2015-05-20T16:52:10-0400
-A -X -n App::Env