Output configuration¶
Configuration¶
Introduce options to define the content of the output:
avail_output
: elements to report onavail
sub-command regular modeavail_terse_output
: elements to report onavail
sub-command terse modelist_output
: elements to report onlist
sub-command regular modelist_terse_output
: elements to report onlist
sub-command terse mode
Specification¶
Output configuration is available
Output configuration is not available (but could be added later on)
Output configuration defines the content of the output not its format
These configurations are set by default with the elements reported by default
avail_output
:modulepath:alias:dirwsym:sym:tag:key
avail_terse_output
:modulepath:alias:dirwsym:sym:tag
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
config
sub-commandMODULES_AVAIL_OUTPUT
to supersedeavail_output
default valueMODULES_AVAIL_TERSE_OUTPUT
to supersedeavail_terse_output
default valueMODULES_LIST_OUTPUT
to supersedelist_output
default valueMODULES_LIST_TERSE_OUTPUT
to supersedelist_terse_output
default value
with the
-o
/--output
command-line option- which applies to the current output mode defined
-o
/--output
also supersedes environment variable definition
Accepted elements in value lists are:
- For
avail
options: modulepath, alias, dirwsym, sym, tag, key - For
list
options: header, idx, variant, sym, tag, key
- For
If the
-o
/--output
options are wronly specifiedAn 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 specifiedTheir value is ignored
So the default value takes precedence, unless a
-o
/--output
option is specifiedValue in environment variable is wronly 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
configurationsEnabled
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
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
Output key¶
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)