Optparsified.

This commit is contained in:
Jeremy Fincher 2003-10-02 05:49:40 +00:00
parent eb3be4c0d1
commit f1e158946b

View File

@ -5,11 +5,13 @@ import supybot
import os
import sys
import os.path
import optparse
if sys.version_info < (2, 3, 0):
sys.stderr.write('This script requires Python 2.3 or newer.\n')
sys.exit(-1)
import conf
from questions import *
template = '''
@ -76,7 +78,27 @@ Class = %s
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
'''.strip() # This removes the newlines that precede and follow the text.
if __name__ == '__main__':
def main():
parser = optparse.OptionParser(usage='Usage: %prog [options]',
version='Supybot %s' % conf.version)
parser.add_option('-r', '--regexp', action='store_true', dest='regexp',
help='uses a regexp-based callback.')
parser.add_option('-n', '--name', action='store', dest='name',
help='sets the name for the plugin.')
parser.add_option('-t', '--thread', action='store_true', dest='threaded',
help='makes the plugin threaded.')
(options, args) = parser.parse_args()
if options.name:
name = options.name
if options.regexp:
kind = 'regexp'
else:
kind = 'command'
if options.threaded:
threaded = True
else:
threaded = False
else:
name = something('What should the name of the plugin be?')
if name.endswith('.py'):
name = name[:-3]
@ -103,22 +125,31 @@ if __name__ == '__main__':
regexp-based. But you'll have to do that yourself after this
wizard is finished :)
""").strip())
kind = expect('Do you want a command-based plugin' \
' or a regexp-based plugin?', ['command', 'regexp'])
if expect('Do you want a command-based plugin' \
' or a regexp-based plugin?',
['command', 'regexp']) == 'command':
className = 'callbacks.Privmsg'
else:
className = 'callbacks.PrivmsgRegexp'
print 'Sometimes you\'ll want a callback to be threaded. If its methods'
print '(command or regexp-based, either one) will take a signficant amount'
print 'of time to run, you\'ll want to thread them so they don\'t block'
print 'the entire bot.'
print textwrap.fill("""Sometimes you'll want a callback to be
threaded. If its methods (command or regexp-based, either one) will
take a signficant amount of time to run, you'll want to thread them so
they don't block the entire bot.""")
print
if yn('Does your plugin need to be threaded?') == 'y':
threaded = (yn('Does your plugin need to be threaded?') == 'y')
if threaded:
threaded = 'threaded = True'
else:
threaded = 'pass'
if kind == 'command':
className = 'callbacks.Privmsg'
else:
className = 'callbacks.PrivmsgRegexp'
if name.endswith('.py'):
name = name[:-3]
while name[0].islower():
print 'Plugin names must begin with a capital.'
name = something('What should the name of the plugin be?')
if name.endswith('.py'):
name = name[:-3]
python = os.path.normpath(sys.executable)
fd = file(name + '.py', 'w')
@ -126,4 +157,11 @@ if __name__ == '__main__':
fd.close()
print 'Your new plugin template is %s.py.' % name
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
pass
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78: