Enable resolution of default module in module sub-directory when this
default symbol targets an hidden directory (whose name starts with a dot
character).
Adapt getModules procedure to add reference, in the directory description
returned as result, for symbolic version targets that are hidden, not
included in returned result but excluded from search made.
Fixes#331
Filter-out from the output of the `aliases` sub-command all hidden
aliases, symbolic versions or hidden modules targeted by a non-hidden
symbolic version.
Fixes#330
Hide special modules (aliases, symbolic versions and virtual modules)
whose version name starts with a dot character (.) from avail, whatis
and paths searches if their query does not fully match special module
name.
Hidden symbolic version will still be reported if the modulefile it
targets is part of search result.
Fixes#329
As json output is not sorted by modulecmd.tcl it may happens that test
output found on some configurations or platforms is not the one
expected although it is correct.
To avoid these errors a new test procedure is added to compare stderr
output in a sorted manner, so error will be obtained if something is
missing in the result but not if the result is outputed in a different
order.
No need to record the content of each directory in the result returned
by the findModules procedure as full directory content (with virtual
elements) is computed in getModules.
Available modules search process is not changed but the refactoring of
the getModules procedure fixed some hidden issues like in 80/068: symbol
targeting a directory which contains aliases where not correctly
analyzed previously (aliases where skipped from result)
Module avail result order also change when JSON format output is enabled
due to this code refactoring (as JSON output is not sorted).
It also fix non-wild searches (performed during whatis or paths
sub-commands) that previously matched partial alias, symbolic version or
virtual module names. Fully matching names for these kind of modules are
not only retained for these non-wild searches. Test results in 70/190,
70/240 and 70/290 have been adapted.
Rework the full getModules procedure to simplify its processing and
apply the same match tests to every kind of modules (regular modulefile,
symbolic, version, alias or virtual module).
getModules procedure acts now in 4 phases. First every kind of modules
are gathered. Then a second phase is set to filter-out modules
dynamically hidden or forbidden (this filter will be deployed later on).
Third phase is the elaboration of each directory content to determine
especially their default and latest versions. At last the fourth phase
process all gathered results to only keep those matching search query.
As the procedure now applies the same mechanisms for all kind of
modules, this code refactoring has solved several issues:
* An `avail` search over a symbolic version targeting a directory now
correctly returns the special modules (alias and virtual module) lying
in this directory.
* `whatis` and `paths` searches only return special modules (symbolic
version, alias and virtual modules) that fully match search query not
those that partially match it.
* alias and virtual module whose name mention a directory that does not
exists are correctly handled.
Fixes#168, #327 and #328
Enclose module name and versions if it contains a space character even
if the advanced versio specifier mechanism is disabled.
Rework the advanced version specifier parsing done in
parseModuleVersionSpecifier procedure to also check argument passed if
advanced_version_spec mechanism is disabled and enclose them in curly
braces if a space character is found in them.
Correctly handle modulefiles and modulepaths containing a space
character in their name.
Protect module and modulepath names which contain a space from being
splitted in two words.
Use of '^' character to redirect stderr has been deprecated starting
Fish version 3.1. It now produces an error. Stderr should be redirected
with '2>' like on SH shells. Hopefully '2>' redirection is also
supported on old Fish versions (all version 2 support it).
Fixes#325
Provide a dedicated batch file to provide similar behavior of envml bash
script but for CMD Windows shell. Update existing envml bash script to
provide same behavior for cmd and sh file (split argument over ';'
character, in addition to '&' character).
When a error occurs during the evaluation of the siteconfig specific
file, only remove from error stack the elements relative to the
modulecmd.tcl code that evaluates the file.