NAME

App::Env::Example - example application environment module for App::Env.

VERSION

version 1.04

DESCRIPTION

Modules used by App::Env to load application environments are named

App::Env::<application>

or, if there is a site specific version:

App::Env::<SITE>::<application>

It is very important that the loaded environment be based upon the current environment. For example, if the environment is derived from running a shell script, make sure either that the shell script is run without running the user's startup file, or that any differences between the current environment and that constructed by the script which are not due to the application are resolved in the current environment's favor. For example, say that LD_LIBRARY_PATH is set in the user's .cshrc file:

setenv LD_LIBRARY_PATH /my/path1

and that before invoking App::Env the user has modified it to

/my/path1:/my/path2

If a csh script is sourced to create the environment, and csh is not run with the -f flag, the user's .cshrc will be sourced, the user's modifications to LD_LIBRARY_PATH will be lost, and breakage may happen.

With that said, it may be necessary in some cases to provide an environment which is independent of the current one. If a module is capable of doing so, it should do so when presented with the Pristine AppOpts option. If it is not capable of doing so the presence of that option should be treated as an error. Pristine environments will by definition cause problems in merged environments.

Application Aliases

If application environments should be available under alternate names (primarily for use appexec), a module should be created for each alias with the single class method alias which should return the name of the original application. For example, to make App3 be an alias for App1 create the following App3.pm module:

package App::Env::App3;
sub alias { return 'App1' };
1;

The aliased environment can provide presets for AppOpts by returning a hash as well as the application name:

package App::Env::ciao34;
sub alias { return 'CIAO', { Version => 3.4 } };
1;

These will be merged with any AppOpts passed in via import(), with the latter taking precedence.

Functions

They should define the following functions:

envs
$hashref = envs( \%opts );

$hashref is a hash containing environmental variables and their values. %opts will contain the options passed to App::Env::import via the AppOpts option.

See the source of this module for a simple example.

SUPPORT

Bugs

Please report any bugs or feature requests to bug-app-env@rt.cpan.org or through the web interface at: https://rt.cpan.org/Public/Dist/Display.html?Name=App-Env

Source

Source is available at

https://gitlab.com/djerius/app-env

and may be cloned from

https://gitlab.com/djerius/app-env.git

SEE ALSO

Please see those modules/websites for more information related to this module.

AUTHOR

Diab Jerius <djerius@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2018 by Smithsonian Astrophysical Observatory.

This is free software, licensed under:

The GNU General Public License, Version 3, June 2007