- Introduce options to define the content of the output:
- :mconfig:`avail_output`: elements to report on :subcmd:`avail` sub-command regular mode
- :mconfig:`avail_terse_output`: elements to report on
avail
sub-command terse mode - :mconfig:`list_output`: elements to report on :subcmd:`list` sub-command regular mode
- :mconfig:`list_terse_output`: elements to report on
list
sub-command terse mode
- Output configuration is available
- For
avail
sub-command, on regular and :option:`--terse` modes - For
list
sub-command, on regular and :option:`--terse` modes
- For
- Output configuration is not available (but could be added later on)
- For :option:`--long` and :option:`--json` modes
- For :subcmd:`aliases`, :subcmd:`savelist`, :subcmd:`whatis`/:subcmd:`search` and :subcmd:`display`/:subcmd:`help` sub-commands
- Output configuration defines the content of the output not its format
- Options :option:`--terse`, :option:`--long` and :option:`--json` defines output format
- These configurations are set by default with the elements reported by default
avail_output
:modulepath:alias:dirwsym:sym:tag:variantifspec:key
avail_terse_output
:modulepath:alias:dirwsym:sym:tag:variantifspec
list_output
:header:idx:variant:sym:tag:key
list_terse_output
:header
- The above default value could be superseded:
- with an environment variable, that can be set through the use of the :subcmd:`config` sub-command
- :envvar:`MODULES_AVAIL_OUTPUT` to supersede
avail_output
default value - :envvar:`MODULES_AVAIL_TERSE_OUTPUT` to supersede
avail_terse_output
default value - :envvar:`MODULES_LIST_OUTPUT` to supersede
list_output
default value - :envvar:`MODULES_LIST_TERSE_OUTPUT` to supersede
list_terse_output
default value
- :envvar:`MODULES_AVAIL_OUTPUT` to supersede
- with the :option:`-o`/:option:`--output` command-line option
- which applies to the current output mode defined
-o
/--output
also supersedes environment variable definition
- with an environment variable, that can be set through the use of the :subcmd:`config` sub-command
- Accepted elements in value lists are:
- For
avail
options: modulepath, alias, dirwsym, indesym, sym, tag, key, variant, variantifspec - For
list
options: header, idx, variant, alias, indesym, sym, tag, key
- For
- If the
-o
/--output
options are wrongly specified- An error is raised and evaluation terminates
- It may happen in the following situations
- No value set after the option
- Option set on unsupported module sub-command
- Element set in option value unsupported by module sub-command
- Elements set in option value not separated by colon character (
:
) - Option set on unsupported output format (
--long
or--json
) - The above situations apply whether command is called from the terminal or within a modulefile
- For all these new configuration options
- accepted value is a list of strings separated by colon character (
:
) - order of elements in the list does not matter
- an empty string is a valid value (means only the modulefile name has to be reported)
- accepted value is a list of strings separated by colon character (
- If the
MODULES_AVAIL_OUTPUT
/MODULES_AVAIL_TERSE_OUTPUT
/MODULES_LIST_OUTPUT
/MODULES_LIST_TERSE_OUTPUT
env vars are wrongly specified- Their value is ignored
- So the default value takes precedence, unless a
-o
/--output
option is specified - Value in environment variable is wrongly specified for instance in the following situations
- Element set in option value unsupported by module sub-command
- Elements set in option value not separated by colon character (
:
)
avail_output
supersedesavail_report_dir_sym
andavail_report_mfile_sym
configurations- Enabled
avail_report_dir_sym
corresponds to addingdirsym
value toavail_output
- Enabled
avail_report_mfile_sym
corresponds to addingsym
value toavail_output
- Both
avail_report_dir_sym
andavail_report_mfile_sym
could be removed safely as:- it was not possible to define them at configure time
- or change default value with an environment variable
- Enabled
- Some output content cannot be controlled at the moment with the output options:
- Hidden modules is exclusively controlled by
--all
option to get these modules unveiled - Indepth/no-indepth output is exclusively controlled by
--no-indepth/--indepth
and related configuration option
- Hidden modules is exclusively controlled by
- When modulepath element is removed from an
avail
-related option- all the modulefiles returned from all searched modulepaths are merged and sorted as a single set
- a module appearing in several modulepaths is only reported once
- tags or symbols applying to a lower priority module with same name are still reported
- An output key is added to print a legend explaining the output
- Meaning of
()
,{}
or<>
is explained - Default version is colored specifically
- Every tag shortened to a defined abbreviation
- Every tag colored specifically
- Every variant type set (
variant=value
,+boolvariant
,-boolvariant
,%shortcutvariantvalue
, etc) - Legend entries only concern elements that can be found in reported output
- Legend entries are not reported on JSON output mode
- Meaning of
- Output key is enabled by default on
avail
andlist
sub-command output- Key is reported at the end of the output
- No key section is reported if no element need to be described (no color, no symbol, no tag, etc)
- Variant keys are not adapted for
avail
output- Even if all possible values are reported instead of the only one set
- Users should be able to understand
name=val1,val2,...
corresponds to thename=value
key entry - Same applies to the shortcut variant key