"Fossies" - the Fresh Open Source Software Archive  

Source code changes of the file "doc/source/design/module-tags.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.

module-tags.rst  (modules-5.1.1.tar.bz2):module-tags.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
Specification Specification
------------- -------------
- Introduce one new modulefile command to set tags on modulefiles: :mfcmd:`modul e-tag` - Introduce one new modulefile command to set tags on modulefiles: :mfcmd:`modul e-tag`
- A tag is a piece of information associated to individual modulefiles - A tag is a piece of information associated to individual modulefiles
- That is reported along module name on ``avail`` or ``list`` sub-command re - That is reported along module name on ``avail`` or ``list`` sub-command resu
sults lts
- This piece of information could lead to specific behaviors when handling m - This piece of information could lead to specific behaviors when handling mod
odulefile over the different module sub-commands or modulefile evaluation modes ulefile over the different module sub-commands or modulefile evaluation modes
- For instance, a module with a ``sticky`` tag set on it cannot be unloa ded - For instance, a module with a ``sticky`` tag set on it cannot be unloaded
- Tag may also be set manually with the :option:`--tag` sub-command option - Tag may also be set manually with the :option:`--tag` sub-command option
- Applies to :subcmd:`load`, :subcmd:`try-load`, :subcmd:`load-any` and :sub - Applies to :subcmd:`load`, :subcmd:`try-load`, :subcmd:`load-any` and :subcm
cmd:`switch` sub-commands d:`switch` sub-commands
- When directly used from the terminal session or within modulefile - When directly used from the terminal session or within modulefile
- Applies to :mfcmd:`always-load`, :mfcmd:`depends-on`, :mfcmd:`prereq`, :mf - Applies to :mfcmd:`always-load`, :mfcmd:`depends-on`, :mfcmd:`prereq`, :mfcm
cmd:`prereq-all` and :mfcmd:`prereq-any` modulefile commands d:`prereq-all` and :mfcmd:`prereq-any` modulefile commands
- 3 different kind of tag exist: - 3 different kind of tag exist:
- Those inherited from module state, consequence of a specific modulefile co mmand or module action - Those inherited from module state, consequence of a specific modulefile comm and or module action
- This kind of tag cannot be defined with the ``module-tag`` command - This kind of tag cannot be defined with the ``module-tag`` command
- An error is returned otherwise - An error is returned otherwise
- Specific modulefile command should be used instead as such tag may - Specific modulefile command should be used instead as such tag may have
have specific properties that should also be defined along specific properties that should also be defined along
- Easier for everybody to only have one way to define such tags and - Easier for everybody to only have one way to define such tags and not 2
not 2 different commands different commands
- Every tag holding specific properties should have its dedicated module file command to define it - Every tag holding specific properties should have its dedicated modulefile command to define it
- Those set with ``module-tag`` or ``--tag`` option that lead to a specific - Those set with ``module-tag`` or ``--tag`` option that lead to a specific be
behavior havior
- Those set with ``module-tag`` or ``--tag`` option that are purely informat - Those set with ``module-tag`` or ``--tag`` option that are purely informatio
ional, no specific behavior nal, no specific behavior
- Tags inherited from module state: - Tags inherited from module state:
- ``hidden``: module not visible, not reported by default in ``avail`` resul - ``hidden``: module not visible, not reported by default in ``avail`` result
t (tag acquired through :mfcmd:`module-hide`) (tag acquired through :mfcmd:`module-hide`)
- ``hidden-loaded``: loaded module not reported by default in ``list`` resul - ``hidden-loaded``: loaded module not reported by default in ``list`` result
t (tag acquired through ``module-hide --hidden-loaded`` or ``--tag`` option) (tag acquired through ``module-hide --hidden-loaded`` or ``--tag`` option)
- ``forbidden``: module that cannot be loaded (tag acquired through :mfcmd:` - ``forbidden``: module that cannot be loaded (tag acquired through :mfcmd:`mo
module-forbid`) dule-forbid`)
- ``nearly-forbidden``: module that soon cannot be loaded (tag acquired thro - ``nearly-forbidden``: module that soon cannot be loaded (tag acquired throug
ugh ``module-forbid``) h ``module-forbid``)
- ``loaded``: loaded module - ``loaded``: loaded module
- ``auto-loaded``: module automatically loaded by another module - ``auto-loaded``: module automatically loaded by another module
- Tags set with ``module-tag`` or ``--tag`` option associated to a specific beha vior: - Tags set with ``module-tag`` or ``--tag`` option associated to a specific beha vior:
- ``sticky``: loaded module cannot be unloaded unless forced or reloaded (se - ``sticky``: loaded module cannot be unloaded unless forced or reloaded or wh
e :ref:`sticky-modules`) en restoring a collection or initial environment (see :ref:`sticky-modules`)
- ``super-sticky``: loaded module cannot be unloaded even if forced, it stil - ``super-sticky``: loaded module cannot be unloaded even if forced, it stills
ls can be unloaded if reloaded afterward (see :ref:`sticky-modules`) can be unloaded if reloaded afterward (see :ref:`sticky-modules`)
- ``keep-loaded``: auto_handling mechanism does not unload auto-loaded modul - ``keep-loaded``: auto_handling mechanism does not unload auto-loaded module
e
- Tags inherited from module state cannot be set with ``module-tag`` command - Tags inherited from module state cannot be set with ``module-tag`` command
- An error is otherwise thrown - An error is otherwise thrown
- Tags inherited from module state cannot be set with ``--tag`` option - Tags inherited from module state cannot be set with ``--tag`` option
- Exception made for ``hidden-loaded`` tag - Exception made for ``hidden-loaded`` tag
- An error is otherwise thrown - An error is otherwise thrown
- Modules project may introduce in the future new tags inherited from new states or new specific behaviors - Modules project may introduce in the future new tags inherited from new states or new specific behaviors
- These new tags will supersede tags set by users using the same naming - These new tags will supersede tags set by users using the same naming
Defining Defining
^^^^^^^^ ^^^^^^^^
- ``module-tag [options] tag modspec...`` - ``module-tag [options] tag modspec...``
- Apply ``tag`` to all modules matching ``modspec`` module specification - Apply ``tag`` to all modules matching ``modspec`` module specification
- :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 module specification is not supported, as modulerc are not evalu - Full path module specification is not supported, as modulerc are not evaluat
ated when reaching a modulefile specified as full path ed when reaching a modulefile specified as full path
- One tag could be applied to multiple module specifications with a single ` - One tag could be applied to multiple module specifications with a single ``m
`module-tag`` command call odule-tag`` command call
- ``module-tag`` accepts the following options: - ``module-tag`` accepts the following options:
- ``--not-user``: specify a list of users unaffected by specified tagging - ``--not-user``: specify a list of users unaffected by specified tagging
- ``--not-group``: specify a list of groups whose member are unaffected by s - ``--not-group``: specify a list of groups whose member are unaffected by spe
pecified tagging cified tagging
- ``--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-tag`` command is made ineffective as well - In which case relative ``module-tag`` command is made ineffective as well as
as remaining content of the modulerc script hosting them 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
- ``module-tag`` is intended to be used in modulerc files - ``module-tag`` is intended to be used in modulerc files
- to be easily fetched during ``avail`` sub-command processing - to be easily fetched during ``avail`` sub-command processing
- 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
- it enables to dissociate environment changes described in the modulefile f - it enables to dissociate environment changes described in the modulefile fro
rom the properties of this modulefile m the properties of this modulefile
- as these properties are usually site-specific - as these properties are usually site-specific
- and modulefile are automatically generated by a build tool - and modulefile are automatically generated by a build tool
- but properties are not always related and set by the build tool - but properties are not always related and set by the build tool
- ``module load --tag tag modspec...`` - ``module load --tag tag modspec...``
- Apply ``tag`` to the loading module selected through ``modspec`` module sp - Apply ``tag`` to the loading module selected through ``modspec`` module spec
ecification ification
- Available from all loading module sub-commands (``load``, ``try-load``, `` - Available from all loading module sub-commands (``load``, ``try-load``, ``lo
load-any`` and ``switch``) ad-any`` and ``switch``)
- Option is preferably written: - Option is preferably written:
- ``--tag=tag`` when called from command-line - ``--tag=tag`` when called from command-line
- ``--tag tag`` when called from modulefile - ``--tag tag`` when called from modulefile
- but both syntaxes work from both locations - but both syntaxes work from both locations
- Multiple tags can be set at once by providing a tag list separated by ``:` ` - Multiple tags can be set at once by providing a tag list separated by ``:``
- e.g., ``--tag foo:bar`` or ``--tag=foo:bar`` - e.g., ``--tag foo:bar`` or ``--tag=foo:bar``
Persistency Persistency
^^^^^^^^^^^ ^^^^^^^^^^^
- The :envvar:`__MODULES_LMTAG` environment variable holds all tag information a pplying to loaded modules - The :envvar:`__MODULES_LMTAG` environment variable holds all tag information a pplying to loaded modules
- Following the same syntax scheme than ``__MODULES_LMCONFLICT`` - Following the same syntax scheme than ``__MODULES_LMCONFLICT``
- For instance ``module/vers&tag&tag:module2&tag`` - For instance ``module/vers&tag&tag:module2&tag``
- The ``loaded`` tag is not recorded in ``__MODULES_LMTAG`` environment variable - The ``loaded`` tag is not recorded in ``__MODULES_LMTAG`` environment variable
- As it obviously applies to all loaded modules defined in ``LOADEDMODULES`` environment variable - As it obviously applies to all loaded modules defined in ``LOADEDMODULES`` e nvironment variable
- The ``auto-loaded`` tag is now recorded in ``__MODULES_LMTAG`` environment var iable - The ``auto-loaded`` tag is now recorded in ``__MODULES_LMTAG`` environment var iable
- Before version 5.0, this tag was not recorded and auto loaded modules wher - Before version 5.0, this tag was not recorded and auto loaded modules where
e listed in the ``__MODULES_LMNOTUASKED`` environment variable listed in the ``__MODULES_LMNOTUASKED`` environment variable
- This environment variable has been removed in Modules 5.0 - This environment variable has been removed in Modules 5.0
- Tags applied to loaded modules are saved in collection - Tags applied to loaded modules are saved in collection
- Saving tags in collection is introduced in Modules 5.1 - Saving tags in collection is introduced in Modules 5.1
- When one or more tags are set on a module to save, the - When one or more tags are set on a module to save, the
``--tag=tag1:tag2`` option is added ``--tag=tag1:tag2`` option is added
- After ``module load`` - After ``module load``
- And before module specification - And before module specification
- When option ``--tag=`` is found on a module to restore - When option ``--tag=`` is found on a module to restore
- Defined tags are transmitted to apply them to the module to load - Defined tags are transmitted to apply them to the module to load
- With this change, the ``--notuasked`` option used in collection - With this change, the ``--notuasked`` option used in collection
previously to indicate module has been auto loaded is replaced by previously to indicate module has been auto loaded is replaced by
``--tag=auto-loaded`` option ``--tag=auto-loaded`` option
- No difference is made between tags set manually (through ``--tag`` - No difference is made between tags set manually (through ``--tag``
option) or tags set in modulerc (through ``module-tag`` or loaded module option) or tags set in modulerc (through ``module-tag`` or loaded module
states): both kind of tags are recorded in collection states): both kind of tags are recorded in collection
- The :mconfig:`collection_pin_tag` configuration option determines what tags - The :mconfig:`collection_pin_tag` configuration option determines what tags
should be recorded in collection should be recorded in collection
- When disabled (default), only the tags set through ``--tag`` option or - When disabled (default), only the tags set through ``--tag`` option or
resulting from the way the module has been loaded (``auto-loaded`` and resulting from the way the module has been loaded (``auto-loaded`` and
``keep-loaded`` tags) are recorded in collections ``keep-loaded`` tags) are recorded in collections
- When enabled, all tags applying to modules are recorded - When enabled, all tags applying to modules are recorded
- Exception made for ``nearly-forbidden`` tag, as its temporal meaning - Exception made for ``nearly-forbidden`` tag, as its temporal meaning
is not fit for being saved is not fit for being saved
- Changing default value of :mconfig:`collection_pin_tag` defines the - Changing default value of :mconfig:`collection_pin_tag` defines the
:envvar:`MODULES_COLLECTION_PIN_TAG` variable :envvar:`MODULES_COLLECTION_PIN_TAG` variable
- The :envvar:`__MODULES_LMEXTRATAG` environment variable holds all tags - The :envvar:`__MODULES_LMEXTRATAG` environment variable holds all tags
applying to loaded modules that have been set through the ``--tag`` option applying to loaded modules that have been set through the ``--tag`` option
- It helps to distinguish these specifically set tags from the others - It helps to distinguish these specifically set tags from the others
- To only record these tags and those resulting from the way the module - To only record these tags and those resulting from the way the module
has been loaded (like ``auto-loaded``) in collections by default has been loaded (like ``auto-loaded``) in collections by default
- The following tags set with ``--tag`` option but which describe a - The following tags set with ``--tag`` option but which describe a
specific state of loaded module are excluded from specific state of loaded module are excluded from
``__MODULES_LMEXTRATAG`` record: ``__MODULES_LMEXTRATAG`` record:
- ``auto-loaded`` - ``auto-loaded``
- ``keep-loaded`` - ``keep-loaded``
- When a collection saved with ``collection_pin_tag`` option enabled is - When a collection saved with ``collection_pin_tag`` option enabled is
restored all tags set are then considered extra tags (as they are found set restored all tags set are then considered extra tags (as they are found set
through the ``--tag`` option). through the ``--tag`` option).
Reporting Reporting
^^^^^^^^^ ^^^^^^^^^
- Defined tags are reported on ``avail`` and ``list`` sub-command results - Defined tags are reported on ``avail`` and ``list`` sub-command results
- Reported along modulefile name, within angle brackets (following the HTML - Reported along modulefile name, within angle brackets (following the HTML ta
tag fashion) g fashion)
- Each tag separated by a colon - Each tag separated by a colon
- For instance ``module/version <tag1:tag2>`` - For instance ``module/version <tag1:tag2>``
- Tags are right-aligned on each column - Tags are right-aligned on each column
- One space character at least separates module name and version or list of - One space character at least separates module name and version or list of sy
symbolic version from tag list mbolic version from tag list
- Defines tags are reported on module evaluation message block - Defines tags are reported on module evaluation message block
- Applies to *Loading*, *Unloading*, *Refreshing*, *Tagging* message blocks - Applies to *Loading*, *Unloading*, *Refreshing*, *Tagging* message blocks
- Only for the module designation set in the header of the block - Only for the module designation set in the header of the block
- Not on the error message, or list of requirement loaded/unloaded - Not on the error message, or list of requirement loaded/unloaded
- To avoid overloading the output - To avoid overloading the output
- Tags are reported the same way than on ``list`` sub-command - Tags are reported the same way than on ``list`` sub-command
- If load evaluation fails, the tags are not reported as they were not yet s - If load evaluation fails, the tags are not reported as they were not yet set
et
- Tags applying to module alias are reported on ``avail`` reports only - Tags applying to module alias are reported on ``avail`` reports only
- Where the module alias stands for itself in the report - Where the module alias stands for itself in the report
- On ``list`` reports, alias is reported along its modulefile target - On ``list`` reports, alias is reported along its modulefile target
- So the tags applying to the alias are not reported - So the tags applying to the alias are not reported
- Also these tags of the alias are not inherited by alias' target - Also these tags of the alias are not inherited by alias' target
- Tags applying to symbolic version are never reported - Tags applying to symbolic version are never reported
- As symbols are never reported alone on ``avail`` or ``list`` reports - As symbols are never reported alone on ``avail`` or ``list`` reports
- Always reported along their modulefile target - Always reported along their modulefile target
- Also these tags of the symbolic versions are not inherited by symbol's tar - Also these tags of the symbolic versions are not inherited by symbol's targe
get t
- Some tags are not reported on ``avail`` output: - Some tags are not reported on ``avail`` output:
- ``hidden-loaded``: correspond to hiding module from loaded list, not from available list - ``hidden-loaded``: correspond to hiding module from loaded list, not from av ailable list
- Some tags are not reported on ``list`` output: - Some tags are not reported on ``list`` output:
- ``loaded``: as every modules reported on ``list`` are loaded - ``loaded``: as every modules reported on ``list`` are loaded
- ``forbidden``: forbidden module cannot be loaded, so it cannot be found am - ``forbidden``: forbidden module cannot be loaded, so it cannot be found amon
ong loaded module list g loaded module list
- ``hidden``: correspond to hiding module from availabilities, not from load - ``hidden``: correspond to hiding module from availabilities, not from loaded
ed list list
- When reported in JSON output format - When reported in JSON output format
- tags are listed under the ``tags`` key - tags are listed under the ``tags`` key
- Default ``--long`` report does not contain tag information - Default ``--long`` report does not contain tag information
- Not to exceed the 80-column output limit by default - Not to exceed the 80-column output limit by default
Abbreviations Abbreviations
""""""""""""" """""""""""""
- Tag abbreviations are used to translate tag names when reporting them on ``ava il`` or ``list`` sub-command output - Tag abbreviations are used to translate tag names when reporting them on ``ava il`` or ``list`` sub-command output
- The :mconfig:`tag_abbrev` configuration defines the abbreviations to apply to each tag - The :mconfig:`tag_abbrev` configuration defines the abbreviations to apply to each tag
- Set by default at configure time to ``auto-loaded=aL:loaded=L:hidden=H:hid den-loaded=H:forbidden=F:nearly-forbidden=nF:sticky=S:super-sticky=sS:keep-loade d=kL`` - Set by default at configure time to ``auto-loaded=aL:loaded=L:hidden=H:hidde n-loaded=H:forbidden=F:nearly-forbidden=nF:sticky=S:super-sticky=sS:keep-loaded= kL``
- Note that by default, *hidden* and *hidden-loaded* tags share the same abbreviation, as they operate on separate contexts (respectively avail and list contexts) - Note that by default, *hidden* and *hidden-loaded* tags share the same abb reviation, as they operate on separate contexts (respectively avail and list con texts)
- Configuration value consists in a ``key=val`` pair value, each key pair ar e separated by a ``:`` character - Configuration value consists in a ``key=val`` pair value, each key pair are separated by a ``:`` character
- Follow the same syntax than ``colors`` configuration - Follow the same syntax than ``colors`` configuration
- If an existing tag name is not part of the configuration, it means no abbr eviation applies to it - If an existing tag name is not part of the configuration, it means no abbrev iation applies to it
- If a tag name has an empty string abbreviation defined it is not reported - If a tag name has an empty string abbreviation defined it is not reported
- Unless if there is an SGR color configuration defined for this tag - Unless if there is an SGR color configuration defined for this tag
- The :envvar:`MODULES_TAG_ABBREV` environment variable is used to set a spe cific value for ``tag_abbrev`` configuration - The :envvar:`MODULES_TAG_ABBREV` environment variable is used to set a speci fic value for ``tag_abbrev`` configuration
- If ``MODULES_TAG_ABBREV`` is set to an empty string, no tag abbreviati on applies - If ``MODULES_TAG_ABBREV`` is set to an empty string, no tag abbreviation a pplies
- In case default value or environment value of ``tag_abbrev`` is badly set - In case default value or environment value of ``tag_abbrev`` is badly set
- a warning message is returned - a warning message is returned
- value is ignored - value is ignored
- if nor the environment nor the default value is correct then no abbreviati - if nor the environment nor the default value is correct then no abbreviation
on applies to tag applies to tag
- Tags are not translated to their defined abbreviation in JSON output format - Tags are not translated to their defined abbreviation in JSON output format
SGR SGR
""" """
- If a tag name or tag abbreviation has an SGR code defined in the color list, t his SGR code is applied to the module name this tag refer to - If a tag name or tag abbreviation has an SGR code defined in the color list, t his SGR code is applied to the module name this tag refer to
- Tag name or abbreviation is not reported by itself in this case - Tag name or abbreviation is not reported by itself in this case
- As it is now represented by the SGR applied to module name - As it is now represented by the SGR applied to module name
- If an abbreviation exists for a tag, SGR code should be defined for this a - If an abbreviation exists for a tag, SGR code should be defined for this abb
bbreviation in color list reviation in color list
- An SGR code set for tag full name does not apply on the abbreviation o f this tag - An SGR code set for tag full name does not apply on the abbreviation of th is tag
- If multiple tags apply to the same modules and have an SGR code defined for th em in the color list - If multiple tags apply to the same modules and have an SGR code defined for th em in the color list
- All these SGR codes are rendered one after the other over the module name - All these SGR codes are rendered one after the other over the module name
- For instance if 2 tags apply, the first one will be rendered over the firs - For instance if 2 tags apply, the first one will be rendered over the first
t half of the module name, the second tag over the second half of half of the module name, the second tag over the second half of
- Tags use by default background color change to stand out - Tags use by default background color change to stand out
- As module kind (alias, directory, etc) is mainly represented with foregrou nd color change by default, - As module kind (alias, directory, etc) is mainly represented with foreground color change by default,
- In case if there are more tags to graphically render than character in module name - In case if there are more tags to graphically render than character in module name
- The remaining tags are reported by there name or abbreviation and SGR appl ies over this name or abbreviation - The remaining tags are reported by there name or abbreviation and SGR applie s over this name or abbreviation
- The :envvar:`MODULES_TAG_COLOR_NAME` environment variable is used to define th e tags whose name (or abbreviation if set) should be reported - The :envvar:`MODULES_TAG_COLOR_NAME` environment variable is used to define th e tags whose name (or abbreviation if set) should be reported
- Their name does not vanish if a SGR code is defined in the color list for - Their name does not vanish if a SGR code is defined in the color list for th
them em
- Their SGR code is not rendered over the module name - Their SGR code is not rendered over the module name
- Instead the SGR is applied to the reported tag name (or tag abbreviation i - Instead the SGR is applied to the reported tag name (or tag abbreviation if
f set) set)
- ``MODULES_TAG_COLOR_NAME`` is bound to the :mconfig:`tag_color_name` confi - ``MODULES_TAG_COLOR_NAME`` is bound to the :mconfig:`tag_color_name` configu
guration ration
- ``MODULES_TAG_COLOR_NAME`` contains the list of tag name (or abbreviation) - ``MODULES_TAG_COLOR_NAME`` contains the list of tag name (or abbreviation),
, each tag separated with colon character (``:``) each tag separated with colon character (``:``)
- If an abbreviation is defined for a tag and one want it to be reported by - If an abbreviation is defined for a tag and one want it to be reported by it
itself not rendered over module name self not rendered over module name
- This abbreviation should be set in ``MODULES_TAG_COLOR_NAME`` - This abbreviation should be set in ``MODULES_TAG_COLOR_NAME``
- Not the full tag name this abbreviation refers to - Not the full tag name this abbreviation refers to
Querying Querying
^^^^^^^^ ^^^^^^^^
- The ``tags`` sub-command of :mfcmd:`module-info` modulefile command enables mo dulefile to know what tags apply to itself - The ``tags`` sub-command of :mfcmd:`module-info` modulefile command enables mo dulefile to know what tags apply to itself
- ``module-info tags`` returns a list of all the tags applying to currently - ``module-info tags`` returns a list of all the tags applying to currently ev
evaluated module aluated module
- an empty list is returned when called from a modulerc evaluation context o - an empty list is returned when called from a modulerc evaluation context or
r if no tag applies to current modulefile if no tag applies to current modulefile
- Tags cannot be queried to select modules - Tags cannot be queried to select modules
- Symbolic versions or variants can be used to select modules - Symbolic versions or variants can be used to select modules
Updating tags on already loaded modules Updating tags on already loaded modules
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
- An attempt to load an already loaded module with a ``--tag`` option set will - An attempt to load an already loaded module with a ``--tag`` option set will
update the list of extra tags set for this loaded module update the list of extra tags set for this loaded module
- Works for every sub-command and modulefile commands accepting the - Works for every sub-command and modulefile commands accepting the
``--tag`` option ``--tag`` option
- Does not imply the reload of the loaded module - Does not imply the reload of the loaded module
- Add tags to the tag list already set, no removal - Add tags to the tag list already set, no removal
- As tags defined with ``module-tag`` cannot be unset - As tags defined with ``module-tag`` cannot be unset
- A ``tag`` sub-command may seem useful to update tag list of already loaded - A ``tag`` sub-command may seem useful to update tag list of already loaded
modules modules
- But it is simpler to use the loading/enabling sub-command to set these - But it is simpler to use the loading/enabling sub-command to set these
extra tags, especially to distinguish between tagging modules or extra tags, especially to distinguish between tagging modules or
modulepaths modulepaths
- So no need for a dedicated sub-command, use loading or enabled - So no need for a dedicated sub-command, use loading or enabled
sub-commands instead sub-commands instead
- If extra tags specified are already set as non-extra tags on already loaded - If extra tags specified are already set as non-extra tags on already loaded
module, the tags are not updated (extra tag list is not updated) module, the tags are not updated (extra tag list is not updated)
- With ``prereq``-like commands: - With ``prereq``-like commands:
- all loaded requirement in specified list get their tag list updated - all loaded requirement in specified list get their tag list updated
- loading requirement does not get its tag list updated (no real use case - loading requirement does not get its tag list updated (no real use case
foreseen for cyclic dependencies) foreseen for cyclic dependencies)
- When restoring collection, extra tags of modules are unset to only keep the - When restoring collection, extra tags of modules are unset to only keep the
extra tags defined in collection. extra tags defined in collection.
- Extra tags are cleared either when module is unloaded or specifically - Extra tags are cleared either when module is unloaded or specifically
if module is already loaded at the correct position if module is already loaded at the correct position
- When unloading a module, the ``auto-loaded``, ``keep-loaded`` and all - When unloading a module, the ``auto-loaded``, ``keep-loaded`` and all
extra tags are unset from in-memory knowledge, not to reapply automatically extra tags are unset from in-memory knowledge, not to reapply automatically
these tags if the module is loaded again: only the extra and state tags these tags if the module is loaded again: only the extra and state tags
from this new load will be set. from this new load will be set.
.. vim:set tabstop=2 shiftwidth=2 expandtab autoindent:
 End of changes. 68 change blocks. 
198 lines changed or deleted 196 lines changed or added

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