- Introduce Vim addon files to highlight the modulefile syntax. Installation of these files, which is enabled by default, is controlled by the
--enable-vim-addons
and--vimdatadir
configure options. (contribution from Felix Neumärker) - If modulefile is fully read, cache the content read and the file header computed to avoid another file read if the same modulefile need to be read multiple times.
- Except for path, paths, list, avail and aliases module commands always fully read a modulefile whether its full content is needed or just its header to verify its validity. Proceed this way to only read file once on commands that first just check modulefile validity then read again valid files to get their full content.
- Introduce Modules Tcl extension library (written in C) to extend Tcl language in order to provide more optimized I/O commands to read a file or a directory content than native Tcl commands do.
- Install: add
--libdir
,--enable-libtclenvmodules
,--with-tcl
and--with-tclinclude
options to configure script to control libtclenvmodules build and installation. - When an error is caught during modulecmd.tcl first initialization steps, ensure the error report facility is initialized to render error message.
- When looking for modulefiles in enabled modulepaths, take
.modulerc
file found at the root of a modulepath directory into account. Which means these rc files are now evaluated like global rc files and can be used to define module aliases targeting modulefiles stored in the underlying file tree. - Correctly get available default (-d) and latest (-L) version whether search pattern is passed with an ending forward slash character or not or if it contains a
*
wildcard character. - Append a forward slash character to any directory result of an avail command to better distinguish these directories from regular files.
- Introduce the ability to control whether
avail
command search results should recursively include or not modulefiles from directories matching search query by use of the--indepth
and--no-indepth
command-line switches or the environment variableMODULES_AVAIL_INDEPTH
. Default behavior is set at the./configure
time with the--enable-avail-indepth
and--disable-avail-indepth
switches. (fix issue #150) - Update
bash
,fish
andzsh
completion scripts to propose available modulefiles in the no in depth mode. - Add the ability to graphically enhance some part of the produced output to improve readability by the use of the
--color
command-line switch or theMODULES_COLOR
environment variable. Both accept the following values:never
,auto
andalways
. When color mode is set toauto
, output is colored if stderr is attached to a terminal. Default color mode could be controlled at configure time with the--enable-color
and the--disable-color
option, which respectively correspond to theauto
andnever
color mode. - Control the color to apply to each element with the
MODULES_COLORS
environment variable or the--with-dark-background-colors
and--with-light-background-colors
configure options. These variable and options take as value a colon-separated list in the same fashionLS_COLORS
does. In this list, each element that should be highlighted is associated to a Select Graphic Rendition (SGR) code. - Inform Modules of the terminal background color with the
MODULES_TERM_BACKGROUND
environment variable or the--with-terminal-background
configure option, which helps to determine if either the dark or light background colors should be used to color output in case no specific color set is defined with theMODULES_COLORS
. - Color prefix tag of debug, error, warning, module error and info messages.
- Highlight the modulefile or collection name when reporting messages for a an action made over this modulefile or collection.
- Color the modulepaths reported on a
use
command. - Highlight title of separator lines or column name of table header.
- Color modulepaths, directories, aliases and symbols reported by the
avail
,aliases
,list
,whatis
andsearch
commands. - When color mode is enabled and module aliases are colored, do not associate them a
@
tag as the color already distinguish them from regular modulefile. - When color mode is enabled and a Select Graphic Rendition (SGR) code is set for the
default
modulefile symbol, apply this SGR code to the modulefile name instead of associating it thedefault
symbol tag. - Highlight matched module search query string among
avail
,whatis
andsearch
command results. - Highlight the modulefile and collection full path name on
display
,help
,test
andsaveshow
command reports. - Color modulefile Tcl commands set in a modulefile on a
display
command report. - Color module commands set in a collection on a
saveshow
command report. - Re-introduce
clear
sub-command. (fix issue #203) - Leverage
--force
command-line switch onclear
sub-command to skip confirmation dialog. (fix issue #268) - Init: improve readability of variable definition operations by writing one definition operation per line rather having multiple commands on a single line like
VAR=val; export VAR
. (fix issue #225) - Add the ability to define a site-specific configuration file with an environment variable:
MODULES_SITECONFIG
. When set, the script file pointed by the variable is sourced (if readable) after the site-specific configuration file initially defined inmodulecmd.tcl
. (contribution from Ben Bowers, fix issue #234) - Doc: add description in the module.1 man page of
MODULERCFILE
in the environment section andsiteconfig.tcl
in the files section. - Install: provide at installation time a bare site-specific configuration script in designated
etcdir
if no pre-existingsiteconfig.tcl
file is found at designated location. - Introduce the
config
sub-command to get and setmodulecmd.tcl
options and to report its current state. - Contrib: update
createmodule.py
script to support execution from the cmd shell. (contribution from Jacques Raphanel, fix issue #270) - Add the ability to configure when unloading a module and multiple loaded modules match request if firstly loaded module should be chosen or lastly loaded module. Configure option
--with-unload-match-order
defines this setting which can be superseded with theMODULES_UNLOAD_MATCH_ORDER
environment variable. This variable can be set with the optionunload_match_order
on theconfig
sub-command. By default, lastly loaded module is selected. It is recommended to keep this behavior when the modulefiles used express dependencies between each other. - Add the ability to configure whether an implicit default version should be defined for modules with no default version explicitly defined. When enabled, which stays the default behavior, a module version is automatically selected (latest one) when the generic name of the module is passed. When implicit default selection is disabled, the name of modules to evaluate should be fully qualified elsewhere an error is returned. This option is set at
./configure
time with the--enable-implicit-default
and--disable-implicit-default
options. It could be superseded with theMODULES_IMPLICIT_DEFAULT
environment variable, that could be set withconfig
module sub-command through theimplicit_default
option. - Install: add to the configure script the
--with-locked-configs
option to ignore environment variable superseding of Modules configurations defined inmodulecmd.tcl
script. Lockable configuration option areextra_siteconfig
andimplicit_default
. Currently locked options are reported through thelocked_configs
option on theconfig
sub-command. - Introduce the ability to control the module search match. Search query string should match module name start or any part of module fully qualified name. Default search match behavior is set at
./configure
time with the--with-search-match
option. It could be superseded with theMODULES_SEARCH_MATCH
environment variable, that could be set withconfig
module sub-command through thesearch_match
option. Command-line switches--starts-with
(-S
) and--contains
(-C
) foravail
module sub-command enable to supersede defined search match configuration. - Introduce the ability not to set the shell startup file that ensure
module
command is defined once shell has been initialized. Setting shell startup file currently means definingENV
andBASH_ENV
environment variables to the Modules bourne shell initialization script../configure
options--enable-set-shell-startup
and--disable-set-shell-startup
define if shell startup should be set or not by default. It could be superseded with theMODULES_SET_SHELL_STARTUP
environment variable, that could be set withconfig
module sub-command through theset_shell_startup
option. - Cookbook: add the test-modulefiles recipe. (fix issue #182 with contribution from Colin Marquardt)
- Fix location of global RC file to
@etcdir@/rc
instead of@prefix@/etc/rc
to cope with@etcdir@
specific setup (@etcdir@
defaults to@prefix@/etc
). - Take into account Modules initialization configurations found in
etc
directory if they exist rather ininit
directory. Ifinitrc
configuration file is found inetcdir
then it is preferred overmodulerc
file ininitdir
. Following the same trend,modulespath
configuration file is found inetcdir
then it is preferred over.modulespath
file ininitdir
. - Introduce the ability to install the Modules initialization configuration files in the
etcdir
rather than in theinitdir
. A new configure option is introduced for this task:--with-initconf-in
. Accepted values for this option are:etcdir
orinitdir
(default). - Add the
--enable-modulespath
configure option, which is an alias for the--enable-dotmodulespath
option as.modulespath
configuration file is namedmodulespath
when installed inetcdic
. - Install: update RPM spec file to disable
set_shell_startup
option by default, set/etc/environment-modules
as configuration directory and store Modules initialization configuration files in it. - Report an error when a module load or unload evaluation aborts due to the use of the
break
orexit
modulefile commands. This error notification clarifies that module evaluation failed. (fix issue #267) - Remove the message block display output for the
reload
,purge
andrestore
sub-commands to preserve this output style for modulefile evaluation modes (load, unload and switch) and thus clarify understanding. - When unloading a module that contains a
module load
ormodule switch
modulefile command, inhibit the unload performed of the useless requirement when auto_handling mode is disabled if currently performing apurge
,reload
orrestore
sub-command. As the unload sequence is determined and managed from these top commands. - Add ability to control module command message verbosity with configuration option. Introduced verbosity levels from the least to the most verbose are
silent
,concise
,normal
,verbose
anddebug
. This option could be set at./configure
time with--with-verbosity
option. It could be superseded with theMODULES_VERBOSITY
environment variable, that could be set withconfig
module sub-command through theverbosity
option. Silent, verbose and debug verbosity modes can be set at the command-line level respectively with--silent
/-s
,--verbose
/-v
and--debug
/-D
command-line switches. (fix issue #204) - When verbosity level is
normal
or higher, reports every module loads or unloads performed torestore
a collection orsource
a scriptfile, even if there is no specific message to output for these module evaluations. Clarifies what module evaluations have been triggered by these sub-commands. - Also honor the
CLICOLOR
andCLICOLOR_FORCE
environment variables to define color mode. (fix issue #279)