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
- with an environment variable, that can be set through the use of the
- 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 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
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)