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 |