- Introduce Vim addon files to highlight the modulefile syntax. Installation of these files, which is enabled by default, is controlled by the
--enable-vim-addonsand--vimdatadirconfigure 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-tcland--with-tclincludeoptions 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
.modulercfile 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
availcommand search results should recursively include or not modulefiles from directories matching search query by use of the--indepthand--no-indepthcommand-line switches or the environment variableMODULES_AVAIL_INDEPTH. Default behavior is set at the./configuretime with the--enable-avail-indepthand--disable-avail-indepthswitches. (fix issue #150) - Update
bash,fishandzshcompletion 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
--colorcommand-line switch or theMODULES_COLORenvironment variable. Both accept the following values:never,autoandalways. 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-colorand the--disable-coloroption, which respectively correspond to theautoandnevercolor mode. - Control the color to apply to each element with the
MODULES_COLORSenvironment variable or the--with-dark-background-colorsand--with-light-background-colorsconfigure options. These variable and options take as value a colon-separated list in the same fashionLS_COLORSdoes. 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_BACKGROUNDenvironment variable or the--with-terminal-backgroundconfigure 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
usecommand. - Highlight title of separator lines or column name of table header.
- Color modulepaths, directories, aliases and symbols reported by the
avail,aliases,list,whatisandsearchcommands. - 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
defaultmodulefile symbol, apply this SGR code to the modulefile name instead of associating it thedefaultsymbol tag. - Highlight matched module search query string among
avail,whatisandsearchcommand results. - Highlight the modulefile and collection full path name on
display,help,testandsaveshowcommand reports. - Color modulefile Tcl commands set in a modulefile on a
displaycommand report. - Color module commands set in a collection on a
saveshowcommand report. - Re-introduce
clearsub-command. (fix issue #203) - Leverage
--forcecommand-line switch onclearsub-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
MODULERCFILEin the environment section andsiteconfig.tclin the files section. - Install: provide at installation time a bare site-specific configuration script in designated
etcdirif no pre-existingsiteconfig.tclfile is found at designated location. - Introduce the
configsub-command to get and setmodulecmd.tcloptions and to report its current state. - Contrib: update
createmodule.pyscript 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-orderdefines this setting which can be superseded with theMODULES_UNLOAD_MATCH_ORDERenvironment variable. This variable can be set with the optionunload_match_orderon theconfigsub-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
./configuretime with the--enable-implicit-defaultand--disable-implicit-defaultoptions. It could be superseded with theMODULES_IMPLICIT_DEFAULTenvironment variable, that could be set withconfigmodule sub-command through theimplicit_defaultoption. - Install: add to the configure script the
--with-locked-configsoption to ignore environment variable superseding of Modules configurations defined inmodulecmd.tclscript. Lockable configuration option areextra_siteconfigandimplicit_default. Currently locked options are reported through thelocked_configsoption on theconfigsub-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
./configuretime with the--with-search-matchoption. It could be superseded with theMODULES_SEARCH_MATCHenvironment variable, that could be set withconfigmodule sub-command through thesearch_matchoption. Command-line switches--starts-with(-S) and--contains(-C) foravailmodule sub-command enable to supersede defined search match configuration. - Introduce the ability not to set the shell startup file that ensure
modulecommand is defined once shell has been initialized. Setting shell startup file currently means definingENVandBASH_ENVenvironment variables to the Modules bourne shell initialization script../configureoptions--enable-set-shell-startupand--disable-set-shell-startupdefine if shell startup should be set or not by default. It could be superseded with theMODULES_SET_SHELL_STARTUPenvironment variable, that could be set withconfigmodule sub-command through theset_shell_startupoption. - Cookbook: add the test-modulefiles recipe. (fix issue #182 with contribution from Colin Marquardt)
- Fix location of global RC file to
@etcdir@/rcinstead of@prefix@/etc/rcto cope with@etcdir@specific setup (@etcdir@defaults to@prefix@/etc). - Take into account Modules initialization configurations found in
etcdirectory if they exist rather ininitdirectory. Ifinitrcconfiguration file is found inetcdirthen it is preferred overmodulercfile ininitdir. Following the same trend,modulespathconfiguration file is found inetcdirthen it is preferred over.modulespathfile ininitdir. - Introduce the ability to install the Modules initialization configuration files in the
etcdirrather than in theinitdir. A new configure option is introduced for this task:--with-initconf-in. Accepted values for this option are:etcdirorinitdir(default). - Add the
--enable-modulespathconfigure option, which is an alias for the--enable-dotmodulespathoption as.modulespathconfiguration file is namedmodulespathwhen installed inetcdic. - Install: update RPM spec file to disable
set_shell_startupoption by default, set/etc/environment-modulesas 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
breakorexitmodulefile commands. This error notification clarifies that module evaluation failed. (fix issue #267) - Remove the message block display output for the
reload,purgeandrestoresub-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 loadormodule switchmodulefile command, inhibit the unload performed of the useless requirement when auto_handling mode is disabled if currently performing apurge,reloadorrestoresub-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,verboseanddebug. This option could be set at./configuretime with--with-verbosityoption. It could be superseded with theMODULES_VERBOSITYenvironment variable, that could be set withconfigmodule sub-command through theverbosityoption. Silent, verbose and debug verbosity modes can be set at the command-line level respectively with--silent/-s,--verbose/-vand--debug/-Dcommand-line switches. (fix issue #204) - When verbosity level is
normalor higher, reports every module loads or unloads performed torestorea collection orsourcea 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
CLICOLORandCLICOLOR_FORCEenvironment variables to define color mode. (fix issue #279)