[Modules] Hiding modules
Manage your shell environment variables and aliases
Brought to you by:
leomania,
xdelaruelle
From: Xavier D. <xav...@gm...> - 2020-09-04 05:24:57
|
Dear All, The newly introduced `module-hide` modulefile command enables to dynamically hide modulefiles, module aliases or symbolic versions specified to it: $ cat /path/to/modulefiles/bar/.modulerc #%Module4.6 module-version bar/1.0 old # hide 'old' symbolic version module-hide bar/old # hide all version 2 and above module-hide bar@2: $ cat /path/to/modulefiles/.modulerc #%Module4.6 # hide all versions of foo module module-hide foo `module-hide` commands should be placed in module rc files and can leverage the [Advanced module version specifiers]( https://timeline.noticeable.io/cbzeG7wTvAIqj21zbUmx/posts/advanced-module-version-specifiers) syntax as shown in the above example. Hidden modules are excluded from available module search or module selection unless query refers to hidden module by its exact name: $ ml av --------------- /path/to/modulefiles --------------- bar/1.0 bar/2.0 $ module load -v foo ERROR: Unable to locate a modulefile for 'foo' $ module load -v foo/1.0 Loading foo/1.0 $ module avail bar/old --------------- /path/to/modulefiles --------------- bar/1.0(old) `module-hide` command accepts a `--soft` option to apply a lighter of hiding to modules: $ cat /path/to/modulefiles/qux/.modulerc #%Module4.6 # softly hide all qux modules module-hide --soft qux The soft hiding mode enables to hide modules from full availability listing yet keeping the ability to select such module for load without having to use module exact name: $ ml av --------------- /path/to/modulefiles --------------- bar/1.0 bar/2.0 $ ml av qux --------------- /path/to/modulefiles --------------- qux/1.0 qux/2.0 $ module load -v qux Loading qux/2.0 Alternatively, a `--hard` option can be set on `module-hide` command to ensure designated modules do not unveil even if referred by their exact name: $ cat /path/to/modulefiles/qux/.modulerc #%Module4.6 # softly hide all qux modules module-hide --soft qux # set highest version of qux hard hidden module-hide --hard qux/3.0 $ ml av qux/3.0 $ ml qux/3.0 ERROR: Unable to locate a modulefile for 'qux/3.0' Some users or groups can be set unaffected by hiding mechanism with the `--not-user` or `--not-group` options: $ cat /path/to/modulefiles/quuz/.modulerc #%Module4.6 # hiding does not apply to grp1 and grp2 groups module-hide --not-group {grp1 grp2} quuz $ id --groups --name grp1 grp7 $ ml av quuz --------------- /path/to/modulefiles --------------- quuz/1.0 quuz/2.0 $ ml -v quuz Loading quuz/2.0 Hiding mechanism can also be set effective only before or after a given date time with the `--before` and `--after` options. Accepted date time format is `YYYY-MM-DD[THH:MM]`. $ cat /path/to/modulefiles/fum/.modulerc #%Module4.6 # hide only before a given date module-hide --hard --before 2020-09-01T12:00 fum/1.0 # hide only after a given date module-hide --hard --after 2020-09-01 fum/2.0 $ date Fri 04 Sep 2020 06:21:48 AM CEST $ ml av fum --------------- /path/to/modulefiles --------------- fum/1.0 Hidden modules can be included in available module searches if option `--all`/`-a` is set on `avail`, `aliases`, `whatis` or `search` sub-commands. Hard hidden modules are unaffected by this option and stay hidden. $ ml av -a --------------- /path/to/modulefiles --------------- bar/1.0(old) foo/1.0 fum/1.0 quuz/2.0 qux/2.0 bar/2.0 foo/2.0 quuz/1.0 qux/1.0 This new feature is available in git repository and will be included in next release (v4.6). Regards, Xavier |