diff options
author | necoro <> | 2007-06-15 14:35:38 +0000 |
---|---|---|
committer | necoro <> | 2007-06-15 14:35:38 +0000 |
commit | 9df169cefbf6786428c30a1c5ed81de8e2332afb (patch) | |
tree | ecfa0149a20e2e3cd361c7b38e5f33bbb1b45f7f | |
parent | e0edfdf4437466d385d7035b124cb1efa8b20fdb (diff) | |
download | portato-9df169cefbf6786428c30a1c5ed81de8e2332afb.tar.gz portato-9df169cefbf6786428c30a1c5ed81de8e2332afb.tar.bz2 portato-9df169cefbf6786428c30a1c5ed81de8e2332afb.zip |
use optparse to parse cmdline options
-rw-r--r-- | doc/Changelog | 1 | ||||
-rwxr-xr-x | portato.py | 81 |
2 files changed, 42 insertions, 40 deletions
diff --git a/doc/Changelog b/doc/Changelog index 9dbec15..e03bfa5 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -2,6 +2,7 @@ next: - new icon by p4r4d0x - sync command now accepts "&&" - added ebuild-viewer +- use optparse to parse cmdline options 0.7.4.2: - bugfix in PortageSystem @@ -13,54 +13,55 @@ # Written by René 'Necoro' Neumann <necoro@necoro.net> 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 <http://www.gnu.org/licenses/gpl.html>. -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 <necoro@necoro.net>""" % 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() |