Skip to content
Snippets Groups Projects
Commit 5bde8359 authored by Todd Gamblin's avatar Todd Gamblin
Browse files

More information in extensions command.

parent 2d9190d2
No related branches found
No related tags found
No related merge requests found
......@@ -54,9 +54,14 @@ def extensions(parser, args):
if not args.spec:
tty.die("extensions requires a package spec.")
# Checks
spec = spack.cmd.parse_specs(args.spec)
if len(spec) > 1:
tty.die("Can only list extensions for one package.")
if not spec[0].package.extendable:
tty.die("%s is not an extendable package." % spec[0].name)
spec = spack.cmd.disambiguate_spec(spec[0])
if not spec.package.extendable:
......@@ -65,12 +70,28 @@ def extensions(parser, args):
if not args.mode:
args.mode = 'short'
exts = spack.install_layout.get_extensions(spec)
if not exts:
tty.msg("%s has no activated extensions." % spec.cshort_spec)
else:
tty.msg("Extensions for package %s:" % spec.cshort_spec)
colify(pkg.name for pkg in spack.db.extensions_for(spec))
print
tty.msg("%d currently activated:" % len(exts))
spack.cmd.find.display_specs(exts, mode=args.mode)
# List package names of extensions
extensions = spack.db.extensions_for(spec)
if not extensions:
tty.msg("%s has no extensions." % spec.cshort_spec)
return
tty.msg("%s extensions:" % spec.cshort_spec)
colify(ext.name for ext in extensions)
# List specs of installed extensions.
installed = [s.spec for s in spack.db.installed_extensions_for(spec)]
print
if not installed:
tty.msg("None activated.")
return
tty.msg("%d installed:" % len(installed))
spack.cmd.find.display_specs(installed, mode=args.mode)
# List specs of activated extensions.
activated = spack.install_layout.get_extensions(spec)
print
if not activated:
tty.msg("None activated.")
return
tty.msg("%d currently activated:" % len(exts))
spack.cmd.find.display_specs(installed, mode=args.mode)
......@@ -117,6 +117,12 @@ def extensions_for(self, extendee_spec):
return [p for p in self.all_packages() if p.extends(extendee_spec)]
@_autospec
def installed_extensions_for(self, extendee_spec):
return [s.package for s in self.installed_package_specs()
if s.package.extends(extendee_spec)]
def dirname_for_package_name(self, pkg_name):
"""Get the directory name for a particular package. This is the
directory that contains its package.py file."""
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment