Add argument to spack spec
to show deptypes. (#2680)
- `-t` | `--types` argument now shows deptypes in `spack spec`
This commit is contained in:
parent
041f96b349
commit
c4afaabea9
2 changed files with 20 additions and 1 deletions
|
@ -48,6 +48,9 @@ def setup_parser(subparser):
|
||||||
help='Show install status of packages. Packages can be: '
|
help='Show install status of packages. Packages can be: '
|
||||||
'installed [+], missing and needed by an installed package [-], '
|
'installed [+], missing and needed by an installed package [-], '
|
||||||
'or not installed (no annotation).')
|
'or not installed (no annotation).')
|
||||||
|
subparser.add_argument(
|
||||||
|
'-t', '--types', action='store_true', default=False,
|
||||||
|
help='Show dependency types.')
|
||||||
subparser.add_argument(
|
subparser.add_argument(
|
||||||
'specs', nargs=argparse.REMAINDER, help="specs of packages")
|
'specs', nargs=argparse.REMAINDER, help="specs of packages")
|
||||||
|
|
||||||
|
@ -59,6 +62,7 @@ def spec(parser, args):
|
||||||
'format': name_fmt + '$@$%@+$+$=',
|
'format': name_fmt + '$@$%@+$+$=',
|
||||||
'hashes': args.long or args.very_long,
|
'hashes': args.long or args.very_long,
|
||||||
'hashlen': None if args.very_long else 7,
|
'hashlen': None if args.very_long else 7,
|
||||||
|
'show_types': args.types,
|
||||||
'install_status': args.install_status}
|
'install_status': args.install_status}
|
||||||
|
|
||||||
for spec in spack.cmd.parse_specs(args.specs):
|
for spec in spack.cmd.parse_specs(args.specs):
|
||||||
|
|
|
@ -2595,17 +2595,22 @@ def tree(self, **kwargs):
|
||||||
indent = kwargs.pop('indent', 0)
|
indent = kwargs.pop('indent', 0)
|
||||||
fmt = kwargs.pop('format', '$_$@$%@+$+$=')
|
fmt = kwargs.pop('format', '$_$@$%@+$+$=')
|
||||||
prefix = kwargs.pop('prefix', None)
|
prefix = kwargs.pop('prefix', None)
|
||||||
|
show_types = kwargs.pop('show_types', False)
|
||||||
deptypes = kwargs.pop('deptypes', ('build', 'link'))
|
deptypes = kwargs.pop('deptypes', ('build', 'link'))
|
||||||
check_kwargs(kwargs, self.tree)
|
check_kwargs(kwargs, self.tree)
|
||||||
|
|
||||||
out = ""
|
out = ""
|
||||||
for d, node in self.traverse(
|
for d, dep_spec in self.traverse_with_deptype(
|
||||||
order='pre', cover=cover, depth=True, deptypes=deptypes):
|
order='pre', cover=cover, depth=True, deptypes=deptypes):
|
||||||
|
node = dep_spec.spec
|
||||||
|
|
||||||
if prefix is not None:
|
if prefix is not None:
|
||||||
out += prefix(node)
|
out += prefix(node)
|
||||||
out += " " * indent
|
out += " " * indent
|
||||||
|
|
||||||
if depth:
|
if depth:
|
||||||
out += "%-4d" % d
|
out += "%-4d" % d
|
||||||
|
|
||||||
if install_status:
|
if install_status:
|
||||||
status = node._install_status()
|
status = node._install_status()
|
||||||
if status is None:
|
if status is None:
|
||||||
|
@ -2617,6 +2622,16 @@ def tree(self, **kwargs):
|
||||||
|
|
||||||
if hashes:
|
if hashes:
|
||||||
out += colorize('@K{%s} ', color=color) % node.dag_hash(hlen)
|
out += colorize('@K{%s} ', color=color) % node.dag_hash(hlen)
|
||||||
|
|
||||||
|
if show_types:
|
||||||
|
out += '['
|
||||||
|
if dep_spec.deptypes:
|
||||||
|
for t in alldeps:
|
||||||
|
out += ''.join(t[0] if t in dep_spec.deptypes else ' ')
|
||||||
|
else:
|
||||||
|
out += ' ' * len(alldeps)
|
||||||
|
out += '] '
|
||||||
|
|
||||||
out += (" " * d)
|
out += (" " * d)
|
||||||
if d > 0:
|
if d > 0:
|
||||||
out += "^"
|
out += "^"
|
||||||
|
|
Loading…
Reference in a new issue