"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "doc/source/design/hide-or-forbid-modulefile.rst" between
modules-5.1.1.tar.bz2 and modules-5.2.0.tar.bz2

About: The Environment Modules package provides for the dynamic modification of a user’s environment via modulefiles.

hide-or-forbid-modulefile.rst  (modules-5.1.1.tar.bz2):hide-or-forbid-modulefile.rst  (modules-5.2.0.tar.bz2)
skipping to change at line 16 skipping to change at line 16
Configuration Configuration
------------- -------------
- No specific configuration - No specific configuration
Use cases Use cases
--------- ---------
- Restrict usage of particular software to a limited set of user (RestrictUsage) - Restrict usage of particular software to a limited set of user (RestrictUsage)
- Included in module specification result for a not granted user: no - Included in module specification result for a not granted user: no
- Visible for a not granted user on a full ``avail``: no - Visible for a not granted user on a full ``avail``: no
- Visible for a not granted user on a targeted ``avail``: no - Visible for a not granted user on a targeted ``avail``: no
- Visible for a not granted user once loaded on a ``list``: yes - Visible for a not granted user once loaded on a ``list``: yes
- Load tentative for a not granted user: error - Load tentative for a not granted user: error
- Allow usage of particular software once clearance has been obtained (AllowOnce Cleared) - Allow usage of particular software once clearance has been obtained (AllowOnce Cleared)
- Included in module specification result for a not granted user: yes - Included in module specification result for a not granted user: yes
- Visible for a not granted user on a full ``avail``: yes - Visible for a not granted user on a full ``avail``: yes
- Visible for a not granted user on a targeted ``avail``: yes - Visible for a not granted user on a targeted ``avail``: yes
- Visible for a not granted user once loaded on a ``list``: yes - Visible for a not granted user once loaded on a ``list``: yes
- Load tentative for a not granted user: error - Load tentative for a not granted user: error
- Expire a software after a given date (Expire) - Expire a software after a given date (Expire)
- Included in module specification result for a not granted user: no after e - Included in module specification result for a not granted user: no after exp
xpiration date iration date
- Visible for a not granted user on a full ``avail``: no after expiration da - Visible for a not granted user on a full ``avail``: no after expiration date
te - Visible for a not granted user on a targeted ``avail``: no after expiration
- Visible for a not granted user on a targeted ``avail``: no after expiratio date
n date - Visible for a not granted user once loaded on a ``list``: yes, even after ex
- Visible for a not granted user once loaded on a ``list``: yes, even after piration date
expiration date - Load tentative for a not granted user: error after expiration date
- Load tentative for a not granted user: error after expiration date
- Disclose a software after a given date (Disclose) - Disclose a software after a given date (Disclose)
- Included in module specification result for a not granted user: no prior d - Included in module specification result for a not granted user: no prior dis
isclosure date closure date
- Visible for a not granted user on a full ``avail``: no prior disclosure da - Visible for a not granted user on a full ``avail``: no prior disclosure date
te - Visible for a not granted user on a targeted ``avail``: no prior disclosure
- Visible for a not granted user on a targeted ``avail``: no prior disclosur date
e date - Visible for a not granted user once loaded on a ``list``: yes, even prior di
- Visible for a not granted user once loaded on a ``list``: yes, even prior sclosure date
disclosure date - Load tentative for a not granted user: error prior disclosure date
- Load tentative for a not granted user: error prior disclosure date
- Hide software not of interest for current user (HideNotOfInt) - Hide software not of interest for current user (HideNotOfInt)
- Included in module specification result for a not granted user: yes - Included in module specification result for a not granted user: yes
- Visible for a not granted user on a full ``avail``: no, unless specific op - Visible for a not granted user on a full ``avail``: no, unless specific opti
tion set on set
- Visible for a not granted user on a targeted ``avail``: yes - Visible for a not granted user on a targeted ``avail``: yes
- Visible for a not granted user once loaded on a ``list``: yes - Visible for a not granted user once loaded on a ``list``: yes
- Load tentative for a not granted user: success - Load tentative for a not granted user: success
- Hide software only useful for other software as dependency (HideDep) - Hide software only useful for other software as dependency (HideDep)
- Included in module specification result for a not granted user: yes - Included in module specification result for a not granted user: yes
- Visible for a not granted user on a full ``avail``: no, unless specific op - Visible for a not granted user on a full ``avail``: no, unless specific opti
tion set on set
- Visible for a not granted user on a targeted ``avail``: yes - Visible for a not granted user on a targeted ``avail``: yes
- Visible for a not granted user once loaded on a ``list``: yes - Visible for a not granted user once loaded on a ``list``: yes
- Load tentative for a not granted user: success - Load tentative for a not granted user: success
- Hide dependency software once loaded (HideDepOnceLoaded) - Hide dependency software once loaded (HideDepOnceLoaded)
- Included in module specification result for a not granted user: see HideDe - Included in module specification result for a not granted user: see HideDep
p - Visible for a not granted user on a full ``avail``: see HideDep
- Visible for a not granted user on a full ``avail``: see HideDep - Visible for a not granted user on a targeted ``avail``: see HideDep
- Visible for a not granted user on a targeted ``avail``: see HideDep - Visible for a not granted user once loaded on a ``list``: no, unless specifi
- Visible for a not granted user once loaded on a ``list``: no, unless speci c option set
fic option set - Load tentative for a not granted user: see HideDep
- Load tentative for a not granted user: see HideDep
Specification Specification
------------- -------------
- 2 new modulefile commands are introduced for the needs described above: :mfcmd :`module-hide` and :mfcmd:`module-forbid` - 2 new modulefile commands are introduced for the needs described above: :mfcmd :`module-hide` and :mfcmd:`module-forbid`
- ``module-hide`` removes visibility of specified modules - ``module-hide`` removes visibility of specified modules
- ``module-hide`` acts when modules are searched (``avail``, ``whatis`` and ``search`` sub-commands) or selected (``load``, ``unload``, ``display``, etc sub -commands) - ``module-hide`` acts when modules are searched (``avail``, ``whatis`` and `` search`` sub-commands) or selected (``load``, ``unload``, ``display``, etc sub-c ommands)
- Visibility is however enabled if hidden module is specifically searched - Visibility is however enabled if hidden module is specifically searched
- On all context hidden module *mod/1.0* is included in result for insta - On all context hidden module *mod/1.0* is included in result for instance
nce if *mod/1.0* or *mod@1.0,2.0* are specified if *mod/1.0* or *mod@1.0,2.0* are specified
- But hidden module *mod/1.0* is excluded from result if *mod@:2.0* or * - But hidden module *mod/1.0* is excluded from result if *mod@:2.0* or *mod@
mod@1:* are specified 1:* are specified
- And is also excluded from result if *mod* or *mod/** are specified whe - And is also excluded from result if *mod* or *mod/** are specified when *m
n *mod/1.0* is set default od/1.0* is set default
- Unless if search is made to select one module since in this context a - Unless if search is made to select one module since in this context a *mod
*mod* search query is equivalent to *mod/default* * search query is equivalent to *mod/default*
- Hard-hidden modules are not disclosed even if specifically searched - Hard-hidden modules are not disclosed even if specifically searched
- Excluded from module resolution result - Excluded from module resolution result
- Unless precisely specified on the following selection contexts: - Unless precisely specified on the following selection contexts:
- :ref:`module_version_specification_to_select_one_module` - :ref:`module_version_specification_to_select_one_module`
- :ref:`module_version_specification_to_check_compatibility` - :ref:`module_version_specification_to_check_compatibility`
- :ref:`module_version_specification_to_return_all_matching_modules` - :ref:`module_version_specification_to_return_all_matching_modules`
- For example, the hidden module *mod/1.0* - For example, the hidden module *mod/1.0*
- is included in ``module load mod/1.0`` result - is included in ``module load mod/1.0`` result
- is excluded from ``module load mod/1`` result, even if default sym - is excluded from ``module load mod/1`` result, even if default symbol ta
bol targets it rgets it
- is excluded from ``module load mod`` result, unless if default sym - is excluded from ``module load mod`` result, unless if default symbol ta
bol targets it (as query is equivalent to *mod/default*) rgets it (as query is equivalent to *mod/default*)
- is excluded from ``module load mod@:2`` result, even if default sy - is excluded from ``module load mod@:2`` result, even if default symbol t
mbol targets it argets it
- is included in ``module load mod@1.0,2.0`` result - is included in ``module load mod@1.0,2.0`` result
- is included/excluded the same way for ``prereq`` and ``conflict`` - is included/excluded the same way for ``prereq`` and ``conflict`` sub-co
sub-commands than ``load`` sub-command mmands than ``load`` sub-command
- is matched by ``is-loaded`` and ``info-loaded`` sub-commands query - is matched by ``is-loaded`` and ``info-loaded`` sub-commands querying it
ing it once loaded once loaded
- is excluded from ``module whatis`` result - is excluded from ``module whatis`` result
- is included/excluded the same way for ``whatis`` sub-command than - is included/excluded the same way for ``whatis`` sub-command than ``avai
``avail`` sub-command l`` sub-command
- is excluded from ``module avail`` result - is excluded from ``module avail`` result
- is excluded from ``module avail m*`` result - is excluded from ``module avail m*`` result
- is included in ``module avail mod/1.0`` result - is included in ``module avail mod/1.0`` result
- is excluded from ``module avail mod/1`` result, even if default sy - is excluded from ``module avail mod/1`` result, even if default symbol t
mbol targets it argets it
- is excluded from ``module avail mod`` result, even if default symb - is excluded from ``module avail mod`` result, even if default symbol tar
ol targets it (as query is NOT equivalent to *mod/default* in this context) gets it (as query is NOT equivalent to *mod/default* in this context)
- is excluded from ``module avail mod@:2`` result, even if default s - is excluded from ``module avail mod@:2`` result, even if default symbol
ymbol targets it targets it
- is included in ``module avail mod@1.0,2.0`` result - is included in ``module avail mod@1.0,2.0`` result
- Included in module resolution result if :option:`--all` option of ``avail` `, ``whatis``, ``search`` and ``aliases`` sub-commands is set - Included in module resolution result if :option:`--all` option of ``avail``, ``whatis``, ``search`` and ``aliases`` sub-commands is set
- ``--all`` option does not apply to ``is-avail`` sub-command to make it coherent with ``load`` sub-command (e.g., a ``is-avail mod`` returning true imp lies ``load mod`` effectively loading a module) - ``--all`` option does not apply to ``is-avail`` sub-command to make it coh erent with ``load`` sub-command (e.g., a ``is-avail mod`` returning true implies ``load mod`` effectively loading a module)
- Visibility of a module targeted by a ``module-hide`` command, with regular hiding level defined, acts similarly than for a file whose name is prefixed by a dot character on Unix platform - Visibility of a module targeted by a ``module-hide`` command, with regular h iding level defined, acts similarly than for a file whose name is prefixed by a dot character on Unix platform
- If ``--soft`` option is set on ``module-hide`` command, module hiding is w eakened - If ``--soft`` option is set on ``module-hide`` command, module hiding is wea kened
- Module is always included in resolution result for the following conte xts - Module is always included in resolution result for the following contexts
- :ref:`module_version_specification_to_select_one_module` - :ref:`module_version_specification_to_select_one_module`
- :ref:`module_version_specification_to_check_compatibility` - :ref:`module_version_specification_to_check_compatibility`
- For example, the hidden module *mod/1.0* - For example, the hidden module *mod/1.0*
- is included in ``module load mod/1.0`` result - is included in ``module load mod/1.0`` result
- is included in ``module load mod/1`` result - is included in ``module load mod/1`` result
- is included in ``module load mod`` result - is included in ``module load mod`` result
- is included in ``module load mod@:2`` result - is included in ``module load mod@:2`` result
- is included in ``module load mod@1.0,2.0`` result - is included in ``module load mod@1.0,2.0`` result
- is included/excluded the same way for ``prereq`` and ``conflict`` - is included/excluded the same way for ``prereq`` and ``conflict`` sub-co
sub-commands than ``load`` sub-command mmands than ``load`` sub-command
- is matched by ``is-loaded`` and ``info-loaded`` sub-commands query - is matched by ``is-loaded`` and ``info-loaded`` sub-commands querying it
ing it once loaded once loaded
- is excluded from ``module whatis`` result - is excluded from ``module whatis`` result
- is included/excluded the same way for ``whatis`` sub-command than - is included/excluded the same way for ``whatis`` sub-command than ``avai
``avail`` sub-command l`` sub-command
- is excluded from ``module avail`` result - is excluded from ``module avail`` result
- is excluded from ``module avail m*`` result - is excluded from ``module avail m*`` result
- is included in ``module avail mod/1.0`` result - is included in ``module avail mod/1.0`` result
- is included in ``module avail mod/1`` result - is included in ``module avail mod/1`` result
- is included in ``module avail mod`` result - is included in ``module avail mod`` result
- is included in ``module avail mod@:2`` result - is included in ``module avail mod@:2`` result
- is included in ``module avail mod@1.0,2.0`` result - is included in ``module avail mod@1.0,2.0`` result
- If ``--hard`` option is set on ``module-hide`` command, hiding is hardened and designated modules are never unveiled - If ``--hard`` option is set on ``module-hide`` command, hiding is hardened a nd designated modules are never unveiled
- Designated modules are strictly hidden, also referred as *hard-hidden* - Designated modules are strictly hidden, also referred as *hard-hidden*
- ``--all`` option of ``avail`` sub-command cannot unveil them - ``--all`` option of ``avail`` sub-command cannot unveil them
- Excluded from module resolution result, which means it is always exclu ded from resolution on following context: - Excluded from module resolution result, which means it is always excluded from resolution on following context:
- :ref:`module_version_specification_to_select_one_module` - :ref:`module_version_specification_to_select_one_module`
- :ref:`module_version_specification_to_check_compatibility` - :ref:`module_version_specification_to_check_compatibility`
- :ref:`module_version_specification_to_return_all_matching_modules` - :ref:`module_version_specification_to_return_all_matching_modules`
- For example, the hard-hidden module *mod/1.0* - For example, the hard-hidden module *mod/1.0*
- is excluded from ``module load mod/1.0`` result - is excluded from ``module load mod/1.0`` result
- is excluded from ``module load mod`` result, even if default symbo - is excluded from ``module load mod`` result, even if default symbol targ
l targets it ets it
- is excluded from ``module load mod/1`` result, even if default sym - is excluded from ``module load mod/1`` result, even if default symbol ta
bol targets it rgets it
- is excluded from ``module load mod@:2`` result, even if default sy - is excluded from ``module load mod@:2`` result, even if default symbol t
mbol targets it argets it
- is excluded from ``module load mod@1.0,2.0`` result - is excluded from ``module load mod@1.0,2.0`` result
- is included/excluded the same way for ``prereq`` and ``conflict`` - is included/excluded the same way for ``prereq`` and ``conflict`` sub-co
sub-commands than ``load`` sub-command mmands than ``load`` sub-command
- is matched by ``is-loaded`` and ``info-loaded`` sub-commands query - is matched by ``is-loaded`` and ``info-loaded`` sub-commands querying it
ing it once loaded once loaded
- is excluded from any ``avail`` query result - is excluded from any ``avail`` query result
- is included/excluded the same way for ``whatis`` sub-command than - is included/excluded the same way for ``whatis`` sub-command than ``avai
``avail`` sub-command l`` sub-command
- Visibility of a module targeted by a ``module-hide --hard`` command ac ts like if no modulefile exists on filesystem - Visibility of a module targeted by a ``module-hide --hard`` command acts l ike if no modulefile exists on filesystem
- If ``--hidden-loaded`` option is set on ``module-hide``, hiding also appli es to specified modules once they are loaded - If ``--hidden-loaded`` option is set on ``module-hide``, hiding also applies to specified modules once they are loaded
- Hidden once loaded modules do not appear on ``module list`` - Hidden once loaded modules do not appear on ``module list``
- Unless ``--all`` option is set on ``list`` sub-command - Unless ``--all`` option is set on ``list`` sub-command
- Hidden once loaded modules load, unload or tag is not reported - Hidden once loaded modules load, unload or tag is not reported
- If this evaluation has been triggered automatically - If this evaluation has been triggered automatically
- By an *automated module handling mechanism* for instance - By an *automated module handling mechanism* for instance
- Which means user has not explicitly asked the module load or u - Which means user has not explicitly asked the module load or unload
nload
- And was automatically loaded, in case of an automatic unload - And was automatically loaded, in case of an automatic unload
- Which means the automatic unload of an hidden loaded module wi ll be reported if it was manually loaded - Which means the automatic unload of an hidden loaded module will be re ported if it was manually loaded
- And if ``verbosity`` level is lower than ``verbose2`` level - And if ``verbosity`` level is lower than ``verbose2`` level
- And if no issue occurs during hidden module evaluation - And if no issue occurs during hidden module evaluation
- Switch of hidden modules is not reported - Switch of hidden modules is not reported
- If both switched-off and switched-on modules are set hidden - If both switched-off and switched-on modules are set hidden
- If switched-off module were automatically loaded - If switched-off module were automatically loaded
- And if the switch evaluation has been automatically triggered - And if the switch evaluation has been automatically triggered
- When those modules are loaded, a ``hidden-loaded`` tag is applied to t - When those modules are loaded, a ``hidden-loaded`` tag is applied to them
hem and recorded in :envvar:`__MODULES_LMTAG` environment variable to keep track and recorded in :envvar:`__MODULES_LMTAG` environment variable to keep track of
of their hidden status their hidden status
- Hidden once loaded status does not affect ``is-loaded``: these modules - Hidden once loaded status does not affect ``is-loaded``: these modules wil
will always be reported if they match ``is-loaded`` queries l always be reported if they match ``is-loaded`` queries
- ``module-forbid`` disallow evaluation of specified modules - ``module-forbid`` disallow evaluation of specified modules
- It does not imply hiding, but can be of course coupled with ``module-hide` - It does not imply hiding, but can be of course coupled with ``module-hide``
` calls calls
- Evaluation of targeted modules is forbidden - Evaluation of targeted modules is forbidden
- Error is rendered prior evaluation when trying to *load*, *display*, * - Error is rendered prior evaluation when trying to *load*, *display*, *help
help*, *test*, *path*, *whatis* them *, *test*, *path*, *whatis* them
- Note that for *whatis* evaluation mode, an error is reported only if a - Note that for *whatis* evaluation mode, an error is reported only if a mod
module is referred by its exact name which is not the case on ``search`` sub-co ule is referred by its exact name which is not the case on ``search`` sub-comman
mmand as no module is specified, just a keyword to search d as no module is specified, just a keyword to search
- No error occurs when unloading a module that were set forbidden after - No error occurs when unloading a module that were set forbidden after it w
it was loaded by user as loaded by user
- As it impacts module evaluation, ``module-forbid`` is only effective when it targets modulefiles or virtual modules - As it impacts module evaluation, ``module-forbid`` is only effective when it targets modulefiles or virtual modules
- Module alias or symbolic version are not impacted by ``module-forbid`` - Module alias or symbolic version are not impacted by ``module-forbid`` dir
directives ectives
- Even if they match some ``module-forbid`` statements, they are still r - Even if they match some ``module-forbid`` statements, they are still resol
esolved to their target and these targets do not inherit the *forbidden* tag set ved to their target and these targets do not inherit the *forbidden* tag set on
on their alias, symbol. their alias, symbol.
- When a ``module-forbid`` command targets a directory, this directory i - When a ``module-forbid`` command targets a directory, this directory is st
s still resolved to its target, but the target inherits the *forbidden* tag as i ill resolved to its target, but the target inherits the *forbidden* tag as it ma
t matches the name specified on ``module-forbid`` command tches the name specified on ``module-forbid`` command
- When combined with a ``module-hide --hard`` command, designated modules is unveiled if referred by its exact name and set in error - When combined with a ``module-hide --hard`` command, designated modules is u nveiled if referred by its exact name and set in error
- Thus an error is obtained when trying to reach module instead of not f inding it (which is the regular behavior for hard-hidden modules) - Thus an error is obtained when trying to reach module instead of not findi ng it (which is the regular behavior for hard-hidden modules)
- ``module-hide`` accepts options that change its behavior: - ``module-hide`` accepts options that change its behavior:
- ``--hidden-loaded``: hides module from loaded module list - ``--hidden-loaded``: hides module from loaded module list
- ``--soft``: lightweight module hide - ``--soft``: lightweight module hide
- ``--hard``: highest hiding level - ``--hard``: highest hiding level
- ``--not-user``: specify a list of users unaffected by hide mechanism - ``--not-user``: specify a list of users unaffected by hide mechanism
- ``--not-group``: specify a list of groups whose member are unaffected by h - ``--not-group``: specify a list of groups whose member are unaffected by hid
ide mechanism e mechanism
- ``--before``: enables hide mechanism until a given date - ``--before``: enables hide mechanism until a given date
- ``--after``: enables hide mechanism after a given date - ``--after``: enables hide mechanism after a given date
- ``module-forbid`` accepts options that change its behavior: - ``module-forbid`` accepts options that change its behavior:
- ``--not-user``: specify a list of users unaffected by forbid mechanism - ``--not-user``: specify a list of users unaffected by forbid mechanism
- ``--not-group``: specify a list of groups whose member are unaffected by f - ``--not-group``: specify a list of groups whose member are unaffected by for
orbid mechanism bid mechanism
- ``--before``: enables forbid mechanism until a given date - ``--before``: enables forbid mechanism until a given date
- ``--after``: enables forbid mechanism after a given date - ``--after``: enables forbid mechanism after a given date
- ``--message``: supplements error message obtained when trying to evaluate - ``--message``: supplements error message obtained when trying to evaluate a
a forbidden module with given text message forbidden module with given text message
- ``--nearly-message``: supplements warning message obtained when evaluating - ``--nearly-message``: supplements warning message obtained when evaluating a
a nearly forbidden module with given text message nearly forbidden module with given text message
- Each use case expressed above are covered by following command: - Each use case expressed above are covered by following command:
- RestrictUsage: ``module-hide --hard`` - RestrictUsage: ``module-hide --hard``
- AllowOnceCleared: ``module-forbid`` - AllowOnceCleared: ``module-forbid``
- Expire: ``module-forbid --after`` + ``module-hide --hard --after`` - Expire: ``module-forbid --after`` + ``module-hide --hard --after``
- Disclose: ``module-hide --hard --before`` - Disclose: ``module-hide --hard --before``
- HideNotOfInt: ``module-hide --soft`` - HideNotOfInt: ``module-hide --soft``
- HideDep: ``module-hide --soft`` - HideDep: ``module-hide --soft``
- HideDepOnceLoaded: ``module-hide --soft --hidden-loaded`` - HideDepOnceLoaded: ``module-hide --soft --hidden-loaded``
- ``module-hide`` and ``module-forbid`` accept the specification of several modu les - ``module-hide`` and ``module-forbid`` accept the specification of several modu les
- For instance ``module-hide mod1 mod2...`` - For instance ``module-hide mod1 mod2...``
- :ref:`advanced-module-version-specifiers` are supported if relative module - :ref:`advanced-module-version-specifiers` are supported if relative module o
option is enabled ption is enabled
- Full path specification are not supported, as modulerc are not evaluated w - Full path specification are not supported, as modulerc are not evaluated whe
hen reaching a modulefile specified as full path n reaching a modulefile specified as full path
- For instance, ``/path/to/modulefiles/.modulerc`` is not evaluated when - For instance, ``/path/to/modulefiles/.modulerc`` is not evaluated when loa
loading ``/path/to/modulefiles/mod/1.0`` ding ``/path/to/modulefiles/mod/1.0``
- Thus ``module-hide`` and ``module-forbid`` commands set in this module - Thus ``module-hide`` and ``module-forbid`` commands set in this modulerc f
rc files are not evaluated iles are not evaluated
- If module is specified as full path, no error is returned, but it will - If module is specified as full path, no error is returned, but it will hav
have no effect as demonstrated above e no effect as demonstrated above
- Unless on very specific cases, where a global rc file defines thes e hidden/forbidden commands for the full path modules - Unless on very specific cases, where a global rc file defines these hidd en/forbidden commands for the full path modules
- ``--not-user`` and ``--not-group`` specification is only supported on Unix pla tform - ``--not-user`` and ``--not-group`` specification is only supported on Unix pla tform
- These 2 options raise an error when used on Windows platform - These 2 options raise an error when used on Windows platform
- In which case relative ``module-hide`` or ``module-forbid`` command is mad - In which case relative ``module-hide`` or ``module-forbid`` command is made
e ineffective as well as remaining content of the modulerc script hosting them ineffective as well as remaining content of the modulerc script hosting them
- Error message is clearly seen when trying to load related modules and indi - Error message is clearly seen when trying to load related modules and indica
cate where to find the erroneous command te where to find the erroneous command
- ``--before`` and ``--after`` are also supported by ``module-hide`` to phase-ou t modules prior to forbid their evaluation - ``--before`` and ``--after`` are also supported by ``module-hide`` to phase-ou t modules prior to forbid their evaluation
- ``--before`` and ``--after`` accept a date time as value - ``--before`` and ``--after`` accept a date time as value
- Accepted date time format is ``YYYY-MM-DD[THH:MM]`` - Accepted date time format is ``YYYY-MM-DD[THH:MM]``
- If no time value is specified (just a date like ``2020-08-01``), *00:00* i - If no time value is specified (just a date like ``2020-08-01``), *00:00* is
s assumed assumed
- So ``2020-08-01`` is translated into ``2020-08-01T00:00`` - So ``2020-08-01`` is translated into ``2020-08-01T00:00``
- An error is raised if submitted date time value does not match accepted da te time format - An error is raised if submitted date time value does not match accepted date time format
- if both ``--before`` and ``--after`` options are set and *before* date is greater than *after* date - if both ``--before`` and ``--after`` options are set and *before* date is gr eater than *after* date
- targeted module is always hidden/forbidden - targeted module is always hidden/forbidden
- no error is returned - no error is returned
- ``--before`` and ``--after`` options are not supported on Tcl version below 8. 5 - ``--before`` and ``--after`` options are not supported on Tcl version below 8. 5
- Prior 8.5, ``clock scan`` command does not have a ``-format`` option - Prior 8.5, ``clock scan`` command does not have a ``-format`` option
- This option is required to support defined date time format - This option is required to support defined date time format
- An error is raised when ``--before`` or ``--after`` options are used over - An error is raised when ``--before`` or ``--after`` options are used over a
a Tcl version below 8.5 Tcl version below 8.5
- ``--message`` option adds additional text to the *access denied* error message - ``--message`` option adds additional text to the *access denied* error message
- Newline set in text message are preserved, which could help to control tex - Newline set in text message are preserved, which could help to control text
t output format output format
- Message content is set along forbidden module specification - Message content is set along forbidden module specification
- Message recorded for matching module specification will be printed - Message recorded for matching module specification will be printed
- Message recorded on other matching specification will be ignored, only - Message recorded on other matching specification will be ignored, only mes
message from retained matching specification is printed sage from retained matching specification is printed
- Firstly evaluated ``module-forbid`` command that matches module specif - Firstly evaluated ``module-forbid`` command that matches module specificat
ication is retained with its message property ion is retained with its message property
- a module matching a ``module-forbid`` statement whose ``--after`` limit is clo se is considered *nearly forbidden* - a module matching a ``module-forbid`` statement whose ``--after`` limit is clo se is considered *nearly forbidden*
- ``nearly-forbidden`` tag applies to such module - ``nearly-forbidden`` tag applies to such module
- matched ``module-forbid`` statement should of course not be disabled for c - matched ``module-forbid`` statement should of course not be disabled for cur
urrent user of group due to ``--not-user`` or ``--not-group`` option values rent user of group due to ``--not-user`` or ``--not-group`` option values
- the *near* range is defined by the :mconfig:`nearly_forbidden_days` config - the *near* range is defined by the :mconfig:`nearly_forbidden_days` configur
uration, which equals to ``14`` (14 days) by default ation, which equals to ``14`` (14 days) by default
- this configuration accepts an integer value which represents a number of d - this configuration accepts an integer value which represents a number of day
ays prior forbidding starts to be effective for module s prior forbidding starts to be effective for module
- ``nearly_forbidden_days`` configuration can be set at configure time with - ``nearly_forbidden_days`` configuration can be set at configure time with :i
:instopt:`--with-nearly-forbidden-days` option or afterward with the ``config`` nstopt:`--with-nearly-forbidden-days` option or afterward with the ``config`` su
sub-command (which sets the :envvar:`MODULES_NEARLY_FORBIDDEN_DAYS` environment b-command (which sets the :envvar:`MODULES_NEARLY_FORBIDDEN_DAYS` environment va
variable) riable)
- when evaluating a *nearly-forbidden* module, a warning message is reported - when evaluating a *nearly-forbidden* module, a warning message is reported t
to indicate that module access will soon be denied o indicate that module access will soon be denied
- ``--nearly-message`` option adds additional text to the *access will be denied * warning message - ``--nearly-message`` option adds additional text to the *access will be denied * warning message
- Newline set in text message are preserved, which could help to control tex - Newline set in text message are preserved, which could help to control text
t output format output format
- Message content is set along nearly-forbidden module specification - Message content is set along nearly-forbidden module specification
- Message recorded for matching module specification will be printed - Message recorded for matching module specification will be printed
- Message recorded on other matching specification will be ignored, only - Message recorded on other matching specification will be ignored, only mes
message from retained matching specification is printed sage from retained matching specification is printed
- Firstly evaluated ``module-forbid`` command that matches module specif - Firstly evaluated ``module-forbid`` command that matches module specificat
ication is retained with its message property ion is retained with its message property
- ``module-hide`` and ``module-forbid`` are intended to be used in modulerc file s - ``module-hide`` and ``module-forbid`` are intended to be used in modulerc file s
- as they impact modulefile resolution - as they impact modulefile resolution
- they also need to be enabled in modulefile context as global/user rc files - they also need to be enabled in modulefile context as global/user rc files a
are evaluated as modulefile, not modulerc re evaluated as modulefile, not modulerc
- several ``module-hide`` calls for the same module will supersede each other - several ``module-hide`` calls for the same module will supersede each other
- definition with the highest hiding level wins - definition with the highest hiding level wins
- which means the most restrictive call wins - which means the most restrictive call wins
- a ``--hidden-loaded`` status set is kept even if corresponding ``module-hi - a ``--hidden-loaded`` status set is kept even if corresponding ``module-hide
de`` call is not the highest one `` call is not the highest one
- the multiple definitions can come across different modulerc files (global, - the multiple definitions can come across different modulerc files (global, m
modulepath or modulefile rc levels) odulepath or modulefile rc levels)
- Module specification passed as argument to ``module-hide`` and ``module-forbid `` are matched exactly against available modules - Module specification passed as argument to ``module-hide`` and ``module-forbid `` are matched exactly against available modules
- Exception made when *extended_default* or *icase* mechanisms are enabled - Exception made when *extended_default* or *icase* mechanisms are enabled
- Which means wildcard characters like *\** or *?* are treated literally - Which means wildcard characters like *\** or *?* are treated literally
- Auto symbols (*@default* and *@latest*) are adapted when a *latest* version is hidden - Auto symbols (*@default* and *@latest*) are adapted when a *latest* version is hidden
- Auto symbols are applied to this version if it is selected specifically (f - Auto symbols are applied to this version if it is selected specifically (for
or instance loaded by its full name) instance loaded by its full name)
- Auto symbols are applied to another version when hidden latest is not sele - Auto symbols are applied to another version when hidden latest is not select
cted specifically, even if specified with *@latest* auto symbol ed specifically, even if specified with *@latest* auto symbol
- Auto-symbols cannot be set hidden - Auto-symbols cannot be set hidden
- When a defined ``default`` or ``latest`` symbol is set hidden, it is repla - When a defined ``default`` or ``latest`` symbol is set hidden, it is replace
ced by a ``default`` or ``latest`` auto-symbol targeting highest available modul d by a ``default`` or ``latest`` auto-symbol targeting highest available module
e version version
- Targeting an auto-symbol with a ``module-hide`` command, will have no effe - Targeting an auto-symbol with a ``module-hide`` command, will have no effect
ct
- When module specification of ``module-hide`` targets: - When module specification of ``module-hide`` targets:
- A symbolic version - A symbolic version
- This symbol only is hidden - This symbol only is hidden
- Modulefile targeted by hidden symbolic version stays visible - Modulefile targeted by hidden symbolic version stays visible
- An alias - An alias
- This alias only is hidden - This alias only is hidden
- Modulefile targeted by hidden alias stays visible - Modulefile targeted by hidden alias stays visible
- A modulefile targeted by either symbolic version or alias - A modulefile targeted by either symbolic version or alias
- This modulefile is hidden and all symbolic versions targeting it - This modulefile is hidden and all symbolic versions targeting it
- Aliases targeting modulefile stays visible (thus resolving alias in *l - Aliases targeting modulefile stays visible (thus resolving alias in *load*
oad* or *whatis* contexts make hidden modulefile target visible unless if set ha or *whatis* contexts make hidden modulefile target visible unless if set hard-h
rd-hidden) idden)
- Hidden alias or symbolic version should not appear in the list of alternative names of loaded modules - Hidden alias or symbolic version should not appear in the list of alternative names of loaded modules
- Unless this alias or symbolic version is not hard-hidden and is used to de - Unless this alias or symbolic version is not hard-hidden and is used to desi
signate the module to load gnate the module to load
- When ``default`` symbolic version is set hidden - When ``default`` symbolic version is set hidden
- also remove parent module name from the list of alternative names - also remove parent module name from the list of alternative names
- if resolution query corresponds to parent module name, unhide ``defaul - if resolution query corresponds to parent module name, unhide ``default``
t`` symbol unless if hard-hidden symbol unless if hard-hidden
- On ``avail`` sub-command - On ``avail`` sub-command
- Hidden symbolic versions are not reported along module they target - Hidden symbolic versions are not reported along module they target
- Unless for non-hard-hidden symbols specifically designated in search q uery - Unless for non-hard-hidden symbols specifically designated in search query
- A :option:`--default` filtered search considers search query matches ``def ault`` symbol - A :option:`--default` filtered search considers search query matches ``defau lt`` symbol
- So ``default`` symbolic version will appear in result unless if hard-h idden - So ``default`` symbolic version will appear in result unless if hard-hidde n
- Different hiding level are considered - Different hiding level are considered
- *-1*: module is not hidden - *-1*: module is not hidden
- *0*: soft hiding (applied with ``module-hide --soft``) - *0*: soft hiding (applied with ``module-hide --soft``)
- *1*: regular hiding (applied with dot name module or default ``module-hide - *1*: regular hiding (applied with dot name module or default ``module-hide``
`` command) command)
- *2*: hard hiding (applied with ``module-hide --hard``) - *2*: hard hiding (applied with ``module-hide --hard``)
- Hiding threshold - Hiding threshold
- is *0* by default, which means module is considered hidden if its hiding l - is *0* by default, which means module is considered hidden if its hiding lev
evel is greater or equal to *0* el is greater or equal to *0*
- is raised to *2* when ``--all`` option is applied, which means module is c - is raised to *2* when ``--all`` option is applied, which means module is con
onsidered hidden if its hiding level is greater or equal to *2* sidered hidden if its hiding level is greater or equal to *2*
.. vim:set tabstop=2 shiftwidth=2 expandtab autoindent:
 End of changes. 84 change blocks. 
311 lines changed or deleted 306 lines changed or added

Home  |  About  |  Features  |  All  |  Newest  |  Dox  |  Diffs  |  RSS Feeds  |  Screenshots  |  Comments  |  Imprint  |  Privacy  |  HTTP(S)