def main(reactor, procName, *args):
procName = os.path.basename(procName)
clientEndpoints = {}
for k, v in os.environ.iteritems():
_, _, clientName = k.partition('client_endpoint_')
if clientName:
clientEndpoints[clientName] = clientFromString(reactor, v)
if not clientEndpoints:
raise ValueError("no client endpoints detected in the environment")
plugins = [pluginClass(clientEndpoints)
for pluginClass in sorted(pluginClasses, key=nameLength, reverse=True)]
if args == ('autoconf',):
print 'yes'
return defer.succeed(None)
if args == ('suggest',):
suggestions = []
for plugin in plugins:
suggestions.extend((plugin.name + arg).partition(procName)[2]
for arg in plugin.suggest())
print '\n'.join(suggestion for suggestion in suggestions if suggestion)
return defer.succeed(None)
for plugin in plugins:
_, foundPluginName, arg = procName.partition(plugin.name)
if not foundPluginName:
continue
command = 'fetch' if not args else args[0]
method = getattr(plugin, 'command_' + command, None)
if not method:
raise ValueError("%r plugin can't handle the command %r" % (plugin.name, command))
return defer.maybeDeferred(method, arg)
raise ValueError("no plugin was found with the name %r" % (procName,))
评论列表
文章目录