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: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
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 optionwhich 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, indesym, sym, tag, key, variant, variantifspecFor
list
options: header, idx, variant, alias, indesym, sym, tag, key
If the
-o
/--output
options are wrongly 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)
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 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
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 unveiledIndepth/no-indepth output is exclusively controlled by
--no-indepth/--indepth
and related configuration option
When modulepath element is removed from an
avail
-related optionall 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 explainedDefault 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
Output key is enabled by default on
avail
andlist
sub-command outputKey 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
outputEven 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 entrySame applies to the shortcut variant key