Add spack config list command for tab completion (#14474)

* Add spack config list command for tab completion
* Update tab completion scripts
This commit is contained in:
Adam J. Stewart
2020-01-24 19:28:20 -06:00
committed by Peter Scheibel
parent 12a261523e
commit dcd8d7a620
4 changed files with 29 additions and 8 deletions

View File

@@ -56,6 +56,8 @@ def setup_parser(subparser):
'--print-file', action='store_true',
help="print the file name that would be edited")
sp.add_parser('list', help='list configuration sections')
def _get_scope_and_section(args):
"""Extract config scope and section from arguments."""
@@ -83,7 +85,6 @@ def config_get(args):
With no arguments and an active environment, print the contents of
the environment's manifest file (spack.yaml).
"""
scope, section = _get_scope_and_section(args)
@@ -113,7 +114,6 @@ def config_edit(args):
With no arguments and an active environment, edit the spack.yaml for
the active environment.
"""
scope, section = _get_scope_and_section(args)
if not scope and not section:
@@ -127,8 +127,19 @@ def config_edit(args):
editor(config_file)
def config_list(args):
"""List the possible configuration sections.
Used primarily for shell tab completion scripts.
"""
print(' '.join(list(spack.config.section_schemas)))
def config(parser, args):
action = {'get': config_get,
'blame': config_blame,
'edit': config_edit}
action = {
'get': config_get,
'blame': config_blame,
'edit': config_edit,
'list': config_list,
}
action[args.config_command](args)

View File

@@ -91,3 +91,9 @@ def test_config_edit_fails_correctly_with_no_env(mutable_mock_env_path):
def test_config_get_fails_correctly_with_no_env(mutable_mock_env_path):
output = config('get', fail_on_error=False)
assert "requires a section argument or an active environment" in output
def test_config_list():
output = config('list')
assert 'compilers' in output
assert 'packages' in output