spack spec: add '--format' argument (#27908)
This commit is contained in:
parent
254cd624fe
commit
3a0aba0835
@ -34,12 +34,16 @@ def setup_parser(subparser):
|
|||||||
arguments.add_common_arguments(
|
arguments.add_common_arguments(
|
||||||
subparser, ['long', 'very_long', 'install_status']
|
subparser, ['long', 'very_long', 'install_status']
|
||||||
)
|
)
|
||||||
subparser.add_argument(
|
format_group = subparser.add_mutually_exclusive_group()
|
||||||
|
format_group.add_argument(
|
||||||
'-y', '--yaml', action='store_const', dest='format', default=None,
|
'-y', '--yaml', action='store_const', dest='format', default=None,
|
||||||
const='yaml', help='print concrete spec as YAML')
|
const='yaml', help='print concrete spec as YAML')
|
||||||
subparser.add_argument(
|
format_group.add_argument(
|
||||||
'-j', '--json', action='store_const', dest='format', default=None,
|
'-j', '--json', action='store_const', dest='format', default=None,
|
||||||
const='json', help='print concrete spec as JSON')
|
const='json', help='print concrete spec as JSON')
|
||||||
|
format_group.add_argument(
|
||||||
|
'--format', action='store', default=None,
|
||||||
|
help='print concrete spec with the specified format string')
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'-c', '--cover', action='store',
|
'-c', '--cover', action='store',
|
||||||
default='nodes', choices=['nodes', 'edges', 'paths'],
|
default='nodes', choices=['nodes', 'edges', 'paths'],
|
||||||
@ -98,8 +102,10 @@ def spec(parser, args):
|
|||||||
if args.format == 'yaml':
|
if args.format == 'yaml':
|
||||||
# use write because to_yaml already has a newline.
|
# use write because to_yaml already has a newline.
|
||||||
sys.stdout.write(output.to_yaml(hash=hash_type))
|
sys.stdout.write(output.to_yaml(hash=hash_type))
|
||||||
else:
|
elif args.format == 'json':
|
||||||
print(output.to_json(hash=hash_type))
|
print(output.to_json(hash=hash_type))
|
||||||
|
else:
|
||||||
|
print(output.format(args.format))
|
||||||
continue
|
continue
|
||||||
|
|
||||||
with tree_context():
|
with tree_context():
|
||||||
|
@ -79,6 +79,11 @@ def test_spec_json():
|
|||||||
assert 'mpich' in mpileaks
|
assert 'mpich' in mpileaks
|
||||||
|
|
||||||
|
|
||||||
|
def test_spec_format(database, config):
|
||||||
|
output = spec('--format', '{name}-{^mpi.name}', 'mpileaks^mpich')
|
||||||
|
assert output.rstrip('\n') == "mpileaks-mpich"
|
||||||
|
|
||||||
|
|
||||||
def _parse_types(string):
|
def _parse_types(string):
|
||||||
"""Parse deptypes for specs from `spack spec -t` output."""
|
"""Parse deptypes for specs from `spack spec -t` output."""
|
||||||
lines = string.strip().split('\n')
|
lines = string.strip().split('\n')
|
||||||
|
@ -1670,7 +1670,7 @@ _spack_solve() {
|
|||||||
_spack_spec() {
|
_spack_spec() {
|
||||||
if $list_options
|
if $list_options
|
||||||
then
|
then
|
||||||
SPACK_COMPREPLY="-h --help -l --long -L --very-long -I --install-status -y --yaml -j --json -c --cover -N --namespaces --hash-type -t --types -U --fresh --reuse"
|
SPACK_COMPREPLY="-h --help -l --long -L --very-long -I --install-status -y --yaml -j --json --format -c --cover -N --namespaces --hash-type -t --types -U --fresh --reuse"
|
||||||
else
|
else
|
||||||
_all_packages
|
_all_packages
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user