| Index: third_party/twisted_8_1/twisted/scripts/mktap.py
|
| diff --git a/third_party/twisted_8_1/twisted/scripts/mktap.py b/third_party/twisted_8_1/twisted/scripts/mktap.py
|
| deleted file mode 100644
|
| index 9a7ea9dd424e80c163b2db08e1edd9d369e41e7c..0000000000000000000000000000000000000000
|
| --- a/third_party/twisted_8_1/twisted/scripts/mktap.py
|
| +++ /dev/null
|
| @@ -1,190 +0,0 @@
|
| -# -*- test-case-name: twisted.scripts.test.test_mktap -*-
|
| -# Copyright (c) 2001-2008 Twisted Matrix Laboratories.
|
| -# See LICENSE for details.
|
| -
|
| -import warnings, sys, os
|
| -
|
| -
|
| -from twisted.application import service, app
|
| -from twisted.persisted import sob
|
| -from twisted.python import usage, util, plugin as oldplugin
|
| -from twisted import plugin as newplugin
|
| -from twisted.python.util import uidFromString, gidFromString
|
| -
|
| -# API COMPATIBILITY
|
| -IServiceMaker = service.IServiceMaker
|
| -_tapHelper = service.ServiceMaker
|
| -
|
| -warnings.warn(
|
| - "mktap and related support modules are deprecated as of Twisted 8.0. "
|
| - "Use Twisted Application Plugins with the 'twistd' command directly, "
|
| - "as described in 'Writing a Twisted Application Plugin for twistd' "
|
| - "chapter of the Developer Guide.", DeprecationWarning, stacklevel=2)
|
| -
|
| -
|
| -
|
| -def getid(uid, gid):
|
| - """
|
| - Convert one or both of a string representation of a UID and GID into
|
| - integer form. On platforms where L{pwd} and L{grp} is available, user and
|
| - group names can be converted.
|
| -
|
| - @type uid: C{str} or C{NoneType}
|
| - @param uid: A string giving the base-ten representation of a UID or the
|
| - name of a user which can be converted to a UID via L{pwd.getpwnam},
|
| - or None if no UID value is to be obtained.
|
| -
|
| - @type gid: C{str} or C{NoneType}
|
| - @param uid: A string giving the base-ten representation of a GID or the
|
| - name of a group which can be converted to a GID via
|
| - L{grp.getgrnam}, or None if no UID value is to be obtained.
|
| -
|
| - @return: A two-tuple giving integer UID and GID information for
|
| - whichever (or both) parameter is provided with a non-C{None} value.
|
| -
|
| - @raise ValueError: If a user or group name is supplied and L{pwd} or L{grp}
|
| - is not available.
|
| - """
|
| - if uid is not None:
|
| - uid = uidFromString(uid)
|
| - if gid is not None:
|
| - gid = gidFromString(gid)
|
| - return (uid, gid)
|
| -
|
| -
|
| -
|
| -def loadPlugins(debug = None, progress = None):
|
| - tapLookup = {}
|
| -
|
| - plugins = oldplugin._getPlugIns("tap", debug, progress)
|
| - for plug in plugins:
|
| - if hasattr(plug, 'tapname'):
|
| - shortTapName = plug.tapname
|
| - else:
|
| - shortTapName = plug.module.split('.')[-1]
|
| - tapLookup[shortTapName] = plug
|
| -
|
| - plugins = newplugin.getPlugins(IServiceMaker)
|
| - for plug in plugins:
|
| - tapLookup[plug.tapname] = plug
|
| -
|
| - return tapLookup
|
| -
|
| -def addToApplication(ser, name, append, procname, type, encrypted, uid, gid):
|
| - if append and os.path.exists(append):
|
| - a = service.loadApplication(append, 'pickle', None)
|
| - else:
|
| - a = service.Application(name, uid, gid)
|
| - if procname:
|
| - service.IProcess(a).processName = procname
|
| - ser.setServiceParent(service.IServiceCollection(a))
|
| - sob.IPersistable(a).setStyle(type)
|
| - passphrase = app.getSavePassphrase(encrypted)
|
| - if passphrase:
|
| - append = None
|
| - sob.IPersistable(a).save(filename=append, passphrase=passphrase)
|
| -
|
| -class FirstPassOptions(usage.Options):
|
| - synopsis = """Usage: mktap [options] <command> [command options] """
|
| -
|
| - recursing = 0
|
| - params = ()
|
| -
|
| - optParameters = [
|
| - ['uid', 'u', None, "The uid to run as.", uidFromString],
|
| - ['gid', 'g', None, "The gid to run as.", gidFromString],
|
| - ['append', 'a', None,
|
| - "An existing .tap file to append the plugin to, rather than "
|
| - "creating a new one."],
|
| - ['type', 't', 'pickle',
|
| - "The output format to use; this can be 'pickle', 'xml', "
|
| - "or 'source'."],
|
| - ['appname', 'n', None, "The process name to use for this application."]
|
| - ]
|
| -
|
| - optFlags = [
|
| - ['encrypted', 'e', "Encrypt file before writing "
|
| - "(will make the extension of the resultant "
|
| - "file begin with 'e')"],
|
| - ['debug', 'd', "Show debug information for plugin loading"],
|
| - ['progress', 'p', "Show progress information for plugin loading"],
|
| - ['help', 'h', "Display this message"],
|
| - ]
|
| - #zsh_altArgDescr = {"foo":"use this description for foo instead"}
|
| - #zsh_multiUse = ["foo", "bar"]
|
| - #zsh_mutuallyExclusive = [("foo", "bar"), ("bar", "baz")]
|
| - zsh_actions = {"append":'_files -g "*.tap"',
|
| - "type":"(pickle xml source)"}
|
| - zsh_actionDescr = {"append":"tap file to append to", "uid":"uid to run as",
|
| - "gid":"gid to run as", "type":"output format"}
|
| -
|
| - def init(self, tapLookup):
|
| - sc = []
|
| - for (name, module) in tapLookup.iteritems():
|
| - if IServiceMaker.providedBy(module):
|
| - sc.append((
|
| - name, None, lambda m=module: m.options(), module.description))
|
| - else:
|
| - sc.append((
|
| - name, None, lambda obj=module: obj.load().Options(),
|
| - getattr(module, 'description', '')))
|
| -
|
| - sc.sort()
|
| - self.subCommands = sc
|
| -
|
| - def parseArgs(self, *rest):
|
| - self.params += rest
|
| -
|
| - def _reportDebug(self, info):
|
| - print 'Debug: ', info
|
| -
|
| - def _reportProgress(self, info):
|
| - s = self.pb(info)
|
| - if s:
|
| - print '\rProgress: ', s,
|
| - if info == 1.0:
|
| - print '\r' + (' ' * 79) + '\r',
|
| -
|
| - def postOptions(self):
|
| - if self.recursing:
|
| - return
|
| - debug = progress = None
|
| - if self['debug']:
|
| - debug = self._reportDebug
|
| - if self['progress']:
|
| - progress = self._reportProgress
|
| - self.pb = util.makeStatBar(60, 1.0)
|
| - try:
|
| - self.tapLookup = loadPlugins(debug, progress)
|
| - except IOError:
|
| - raise usage.UsageError("Couldn't load the plugins file!")
|
| - self.init(self.tapLookup)
|
| - self.recursing = 1
|
| - self.parseOptions(self.params)
|
| - if not hasattr(self, 'subOptions') or self['help']:
|
| - raise usage.UsageError(str(self))
|
| - if hasattr(self, 'subOptions') and self.subOptions.get('help'):
|
| - raise usage.UsageError(str(self.subOptions))
|
| - if not self.tapLookup.has_key(self.subCommand):
|
| - raise usage.UsageError("Please select one of: "+
|
| - ' '.join(self.tapLookup))
|
| -
|
| -
|
| -def run():
|
| - options = FirstPassOptions()
|
| - try:
|
| - options.parseOptions(sys.argv[1:])
|
| - except usage.UsageError, e:
|
| - print e
|
| - sys.exit(2)
|
| - except KeyboardInterrupt:
|
| - sys.exit(1)
|
| -
|
| - plg = options.tapLookup[options.subCommand]
|
| - if not IServiceMaker.providedBy(plg):
|
| - plg = plg.load()
|
| - ser = plg.makeService(options.subOptions)
|
| - addToApplication(ser,
|
| - options.subCommand, options['append'], options['appname'],
|
| - options['type'], options['encrypted'],
|
| - options['uid'], options['gid'])
|
|
|