From 9df169cefbf6786428c30a1c5ed81de8e2332afb Mon Sep 17 00:00:00 2001 From: necoro <> Date: Fri, 15 Jun 2007 14:35:38 +0000 Subject: use optparse to parse cmdline options --- portato.py | 81 +++++++++++++++++++++++++++++++------------------------------- 1 file changed, 41 insertions(+), 40 deletions(-) (limited to 'portato.py') diff --git a/portato.py b/portato.py index 08d7123..e4210bb 100755 --- a/portato.py +++ b/portato.py @@ -13,54 +13,55 @@ # Written by René 'Necoro' Neumann from portato.constants import VERSION, FRONTENDS, STD_FRONTEND +from optparse import OptionParser import sys +def get_frontend_list (): + return ", ".join(["'%s'" % x for x in FRONTENDS]) + def main (): - uimod = STD_FRONTEND - do_ebuild = False - ebuild_pkg = None - for arg in sys.argv[1:]: - if arg in ("--help","--version","-h","-v"): - print """Portato %s -Copyright (C) 2006-2007 René 'Necoro' Neumann -This is free software. You may redistribute copies of it under the terms of -the GNU General Public License . -There is NO WARRANTY, to the extent permitted by law. + # build the parser + desc = """Portato - A Portage GUI.""" + usage = "%prog [options] [frontend]" + vers = "%%prog v. %s" % VERSION + + parser = OptionParser(version = vers, prog = "Portato", description = desc, usage = usage) + + parser.add_option("--check", action = "store_true", dest = "check", default = False, + help = "runs pychecker (should only be used by developers)") + + parser.add_option("-f", "--frontend", action = "store", choices = FRONTENDS, default = STD_FRONTEND, dest = "frontend", + help = "the frontend to use - possible values are: %s [default: %%default]" % get_frontend_list()) + + parser.add_option("-e", "--ebuild", action = "store", dest = "ebuild", + help = "opens the ebuild viewer instead of launching Portato") -Written by René 'Necoro' Neumann """ % VERSION - sys.exit(0) - - elif arg == "--check": # run pychecker - import os - os.environ['PYCHECKER'] = "--limit 50" - import pychecker.checker - - elif arg in ("--ebuild", "-e"): - do_ebuild = True - - elif do_ebuild: - ebuild_pkg = arg - do_ebuild = False - + # run parser + (options, args) = parser.parse_args() + + # evaluate parser's results + if options.check: # run pychecker + import os + os.environ['PYCHECKER'] = "--limit 50" + import pychecker.checker + + if len(args): # additional arguments overwrite given frontend + arg = args[0] + if arg not in FRONTENDS: + print "Unknown frontend '%s'. Correct frontends are: %s" % (arg, get_frontend_list()) + sys.exit(2) else: - uimod = arg + options.frontend = arg - if uimod in FRONTENDS: - try: - exec ("from portato.gui.%s import run, show_ebuild" % uimod) - except ImportError, e: - print "'%s' should be installed, but cannot be imported. This is definitly a bug. (%s)" % (uimod, e[0]) - sys.exit(1) - else: - print ("Unknown interface '%s'. Correct interfaces are:" % uimod) , - for u in FRONTENDS: - print u , - print + try: + exec ("from portato.gui.%s import run, show_ebuild" % options.frontend) + except ImportError, e: + print "'%s' should be installed, but cannot be imported. This is definitly a bug. (%s)" % (options.frontend, e[0]) sys.exit(1) - - if ebuild_pkg: - show_ebuild(ebuild_pkg) + + if options.ebuild: + show_ebuild(options.ebuild) else: run() -- cgit v1.2.3