def main(args): from flumotion.common import setup setup.setupPackagePath() usage_str = ('Usage: %prog [options] [COMPONENT-OR-PLUG' ' [FULL-PROPERTY-NAME]]') fpname_str = ("FULL-PROPERTY-NAME: represents a fully qualified" " property name, including the names of the containing" " properties: " "...[property-name:]property-name") parser = OptionParser(usage=usage_str, description=fpname_str, domain="flumotion-inspect") log.debug('inspect', 'Parsing arguments (%r)' % ', '.join(args)) options, args = parser.parse_args(args) r = registry.getRegistry() if len(args) == 1: # print all components components = [(c.getType(), c) for c in r.getComponents()] components.sort() print '\nAvailable components:\n' for name, c in components: print ' %s' % name plugs = [(p.getType(), p) for p in r.getPlugs()] plugs.sort() print '\nAvailable plugs:\n' for name, p in plugs: print ' %s' % name print elif len(args) == 2: cname = args[1] handled = False if r.hasComponent(cname): handled = True c = r.getComponent(cname) print '\nComponent:' print ' %s' % cname desc = c.getDescription() if desc: print ' %s' % desc print '\nSource:' print ' %s' % c.getSource() print ' in %s' % c.getBase() print '\nEaters:' if c.getEaters(): for e in c.getEaters(): print (' %s (%s%s)' % (e.getName(), e.getRequired() and 'required' or 'optional', (e.getMultiple() and ', multiple ok' or ''))) else: print ' (None)' print '\nFeeders:' if c.getFeeders(): for e in c.getFeeders(): print ' %s' % e else: print ' (None)' print '\nFeatures:' features = [(p.getType(), p) for p in c.getEntries()] features.sort() if features: for k, v in features: print ' %s: %s:%s' % (k, v.getLocation(), v.getFunction()) else: print ' (None)' print '\nProperties:' printProperties(c.getProperties(), 0) sockets = c.getSockets() print '\nClocking:' print ' Needs synchronisation: %r' % c.getNeedsSynchronization() if (c.getClockPriority() is not None and c.getNeedsSynchronization()): print ' Clock priority: %d' % c.getClockPriority() print '\nSockets:' for socket in sockets: print ' %s' % socket print if r.hasPlug(cname): handled = True p = r.getPlug(cname) print '\nPlug type:' print ' %s' % cname desc = p.getDescription() if desc: print ' %s' % desc print '\nEntry:' e = p.getEntry() print ' %s() in %s' % (e.getFunction(), e.getModuleName()) print '\nProperties:' printProperties(p.getProperties(), 0) print if not handled: parser.exit(status=1, msg=('Unknown component or plug `%s\'\n' % cname)) elif len(args) == 3: cname = args[1] pname = args[2] ppath = pname.split(':') handled = False if r.hasComponent(cname): handled = True c = r.getComponent(cname) try: prop = getNestedProperty(c, ppath) except _NestedPropertyError, npe: parser.exit(status=1, msg='%s\n' % npe.message) print '\nComponent:' print ' %s' % cname desc = c.getDescription() if desc: print ' %s' % desc print '\nProperty:' printProperty(prop, len(prop.getName())) print if r.hasPlug(cname): handled = True p = r.getPlug(cname) try: prop = getNestedProperty(p, ppath) except _NestedPropertyError, npe: parser.exit(status=1, msg='%s\n' % npe.message) print '\nPlug:' print ' %s' % cname print '\nType:' print ' %s' % p.getType() print '\nProperty:' printProperty(prop, len(prop.getName())) print
def main(args): from flumotion.common import setup setup.setupPackagePath() usage_str = ('Usage: %prog [options] [COMPONENT-OR-PLUG' ' [FULL-PROPERTY-NAME]]') fpname_str = ("FULL-PROPERTY-NAME: represents a fully qualified" " property name, including the names of the containing" " properties: " "...[property-name:]property-name") parser = OptionParser(usage=usage_str, description=fpname_str, domain="flumotion-inspect") log.debug('inspect', 'Parsing arguments (%r)' % ', '.join(args)) options, args = parser.parse_args(args) r = registry.getRegistry() if len(args) == 1: # print all components components = [(c.getType(), c) for c in r.getComponents()] components.sort() print '\nAvailable components:\n' for name, c in components: print ' %s' % name plugs = [(p.getType(), p) for p in r.getPlugs()] plugs.sort() print '\nAvailable plugs:\n' for name, p in plugs: print ' %s' % name print elif len(args) == 2: cname = args[1] handled = False if r.hasComponent(cname): handled = True c = r.getComponent(cname) print '\nComponent:' print ' %s' % cname desc = c.getDescription() if desc: print ' %s' % desc print '\nSource:' print ' %s' % c.getSource() print ' in %s' % c.getBase() print '\nEaters:' if c.getEaters(): for e in c.getEaters(): print(' %s (%s%s)' % (e.getName(), e.getRequired() and 'required' or 'optional', (e.getMultiple() and ', multiple ok' or ''))) else: print ' (None)' print '\nFeeders:' if c.getFeeders(): for e in c.getFeeders(): print ' %s' % e else: print ' (None)' print '\nFeatures:' features = [(p.getType(), p) for p in c.getEntries()] features.sort() if features: for k, v in features: print ' %s: %s:%s' % (k, v.getLocation(), v.getFunction()) else: print ' (None)' print '\nProperties:' printProperties(c.getProperties(), 0) sockets = c.getSockets() print '\nClocking:' print ' Needs synchronisation: %r' % c.getNeedsSynchronization() if (c.getClockPriority() is not None and c.getNeedsSynchronization()): print ' Clock priority: %d' % c.getClockPriority() print '\nSockets:' for socket in sockets: print ' %s' % socket print if r.hasPlug(cname): handled = True p = r.getPlug(cname) print '\nPlug type:' print ' %s' % cname desc = p.getDescription() if desc: print ' %s' % desc print '\nEntry:' e = p.getEntry() print ' %s() in %s' % (e.getFunction(), e.getModuleName()) print '\nProperties:' printProperties(p.getProperties(), 0) print if not handled: parser.exit(status=1, msg=('Unknown component or plug `%s\'\n' % cname)) elif len(args) == 3: cname = args[1] pname = args[2] ppath = pname.split(':') handled = False if r.hasComponent(cname): handled = True c = r.getComponent(cname) try: prop = getNestedProperty(c, ppath) except _NestedPropertyError, npe: parser.exit(status=1, msg='%s\n' % npe.message) print '\nComponent:' print ' %s' % cname desc = c.getDescription() if desc: print ' %s' % desc print '\nProperty:' printProperty(prop, len(prop.getName())) print if r.hasPlug(cname): handled = True p = r.getPlug(cname) try: prop = getNestedProperty(p, ppath) except _NestedPropertyError, npe: parser.exit(status=1, msg='%s\n' % npe.message) print '\nPlug:' print ' %s' % cname print '\nType:' print ' %s' % p.getType() print '\nProperty:' printProperty(prop, len(prop.getName())) print