More information in extensions command.
This commit is contained in:
		@@ -54,9 +54,14 @@ def extensions(parser, args):
 | 
				
			|||||||
    if not args.spec:
 | 
					    if not args.spec:
 | 
				
			||||||
        tty.die("extensions requires a package spec.")
 | 
					        tty.die("extensions requires a package spec.")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Checks
 | 
				
			||||||
    spec = spack.cmd.parse_specs(args.spec)
 | 
					    spec = spack.cmd.parse_specs(args.spec)
 | 
				
			||||||
    if len(spec) > 1:
 | 
					    if len(spec) > 1:
 | 
				
			||||||
        tty.die("Can only list extensions for one package.")
 | 
					        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])
 | 
					    spec = spack.cmd.disambiguate_spec(spec[0])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if not spec.package.extendable:
 | 
					    if not spec.package.extendable:
 | 
				
			||||||
@@ -65,12 +70,28 @@ def extensions(parser, args):
 | 
				
			|||||||
    if not args.mode:
 | 
					    if not args.mode:
 | 
				
			||||||
        args.mode = 'short'
 | 
					        args.mode = 'short'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    exts = spack.install_layout.get_extensions(spec)
 | 
					    # List package names of extensions
 | 
				
			||||||
    if not exts:
 | 
					    extensions = spack.db.extensions_for(spec)
 | 
				
			||||||
        tty.msg("%s has no activated extensions." % spec.cshort_spec)
 | 
					    if not extensions:
 | 
				
			||||||
    else:
 | 
					        tty.msg("%s has no extensions." % spec.cshort_spec)
 | 
				
			||||||
        tty.msg("Extensions for package %s:" % spec.cshort_spec)
 | 
					        return
 | 
				
			||||||
        colify(pkg.name for pkg in spack.db.extensions_for(spec))
 | 
					    tty.msg("%s extensions:" % spec.cshort_spec)
 | 
				
			||||||
        print
 | 
					    colify(ext.name for ext in extensions)
 | 
				
			||||||
        tty.msg("%d currently activated:" % len(exts))
 | 
					
 | 
				
			||||||
        spack.cmd.find.display_specs(exts, mode=args.mode)
 | 
					    # 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)]
 | 
					        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):
 | 
					    def dirname_for_package_name(self, pkg_name):
 | 
				
			||||||
        """Get the directory name for a particular package.  This is the
 | 
					        """Get the directory name for a particular package.  This is the
 | 
				
			||||||
           directory that contains its package.py file."""
 | 
					           directory that contains its package.py file."""
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user