Skip to content

Instantly share code, notes, and snippets.

@xmonader
Created April 21, 2013 11:46
Show Gist options
  • Select an option

  • Save xmonader/5429337 to your computer and use it in GitHub Desktop.

Select an option

Save xmonader/5429337 to your computer and use it in GitHub Desktop.
from getopt import getopt
from optparse import OptionParser
from argparse import ArgumentParser
cmds=["flask -c users", "flask --controller users", "flask --controller=users",
"flask -m post", "flask --model post", "flask --model=post",
"flask -v", "flask --version"
]
get_optsv= lambda s : s.split()[1:]
def parse_getopt(s):
flask_shortopts="vc:m:"
flask_longopts=["version", "model=", "controller="]
print "[+]geopt parsing %s"%s
print "-------------"
optsv=get_optsv(s)
parsed, remainder = getopt(optsv, flask_shortopts, flask_longopts)
for opt, arg in parsed:
print "option: %s, arg:%s"%(opt,arg)
print "[+]complete"
map(parse_getopt, cmds) #doesn't support -h --help
cmds_extra = cmds + ['flask -h', 'flask --help']
def parse_optparse(s):
print "[+]optparse parsing %s"%s
print "-------------------"
optsv=get_optsv(s)
p=OptionParser()
p.add_option("-v", "--version", action="store_true", dest="version", default=False)
p.add_option("-c", "--controller", action="store", dest="controller")
p.add_option("-m", "--model", action="store", dest="model")
options, args=p.parse_args(optsv)
print "options: %s"%str(options)
print "args: %s"%str(args)
print "[+]complete"
map(parse_optparse, cmds_extra) #supports -h, --help
def parse_argparse(s):
print "[+]argparse parsing %s"%s
print "-------------------"
optsv=get_optsv(s)
p=ArgumentParser()
p.add_argument("-v", "--version", help="prints version", action="store_true", default=False)
p.add_argument("-c", "--controller", help="generate controller",dest="controller")
p.add_argument("-m", "--model", help="generate model", dest="model")
args=p.parse_args(optsv)
print "args: %s"%str(args)
print "[+]complete"
map(parse_argparse, cmds_extra)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment