From 2d5596e42cda76c46838bd0e66c554b97a97f68d Mon Sep 17 00:00:00 2001 From: William Douglas Date: Mon, 1 Jul 2013 16:26:51 -0700 Subject: [PATCH] Clean up and pythonize swup Add main test and handle exceptions to return exit failure. Change-Id: I20aed4da12bf4f15116384b0faee84135aa82923 Signed-off-by: William Douglas --- swup.py | 121 ++++++++++++++++++++++++++++++++++------------------------------ 1 file changed, 65 insertions(+), 56 deletions(-) diff --git a/swup.py b/swup.py index 43d4c54..73dd9e4 100755 --- a/swup.py +++ b/swup.py @@ -259,75 +259,84 @@ def list_updates(): print "%s" %u['id'] print " %s" %u['title'] +def get_options(): + parser = OptionParser() + parser.add_option("-V", "--os-version", action="store_true", dest="osver", default=False, + help="Current OS Version") -parser = OptionParser() -parser.add_option("-V", "--os-version", action="store_true", dest="osver", default=False, - help="Current OS Version") + parser.add_option("-l", "--list-updates", action="store_true", dest="listupdates", default=False, + help="List updates") -parser.add_option("-l", "--list-updates", action="store_true", dest="listupdates", default=False, - help="List updates") + parser.add_option("-d", "--download-only", action="store_true", dest="downloadonly", default=False, + help="Download only") -parser.add_option("-d", "--download-only", action="store_true", dest="downloadonly", default=False, - help="Download only") + parser.add_option("-i", "--install", dest="install", metavar="LABEL", + help="Install update") -parser.add_option("-i", "--install", dest="install", metavar="LABEL", - help="Install update") + parser.add_option("-p", "--prepare", dest="prepare", metavar="LABEL", + help="Prepare update") -parser.add_option("-p", "--prepare", dest="prepare", metavar="LABEL", - help="Prepare update") + parser.add_option("-a", "--install-all", dest="installall", action="store_true", default=False, + help="Install all updates") -parser.add_option("-a", "--install-all", dest="installall", action="store_true", default=False, - help="Install all updates") + parser.add_option("-P", "--prepare-all", dest="prepareall", action="store_true", default=False, + help="prepare update") -parser.add_option("-P", "--prepare-all", dest="prepareall", action="store_true", default=False, - help="prepare update") + parser.add_option("-r", "--recommended", dest="recommended", action="store_true", default=False, + help="Install recommended updates only") -parser.add_option("-r", "--recommended", dest="recommended", action="store_true", default=False, - help="Install recommended updates only") + parser.add_option("-q", "--quiet", + action="store_false", dest="verbose", default=True, + help="don't print status messages to stdout") -parser.add_option("-q", "--quiet", - action="store_false", dest="verbose", default=True, - help="don't print status messages to stdout") + (options, args) = parser.parse_args() -(options, args) = parser.parse_args() + return options -if not os.path.exists(update_cache): - os.mkdir("%s" % update_cache) -if not os.path.exists("%s/download" % update_cache): - os.mkdir("%s/download" % update_cache) - os.mkdir("%s/download/metadata" % update_cache) +def run_action(options): + if not os.path.exists(update_cache): + os.mkdir("%s" % update_cache) + if not os.path.exists("%s/download" % update_cache): + os.mkdir("%s/download" % update_cache) + os.mkdir("%s/download/metadata" % update_cache) -if not os.path.exists("%s/repos.d" % update_cache): - os.mkdir("%s/repos.d" % update_cache) + if not os.path.exists("%s/repos.d" % update_cache): + os.mkdir("%s/repos.d" % update_cache) -if options.osver: - os_release = get_current_version() - print os_release['version_id'].strip('"') + if options.osver: + os_release = get_current_version() + print os_release['version_id'].strip('"') -if options.listupdates: - probe_updates() - list_updates() + if options.listupdates: + probe_updates() + list_updates() -if options.downloadonly: - probe_updates() - download_all_updates() + if options.downloadonly: + probe_updates() + download_all_updates() -if options.prepare is not None: - probe_updates() - updates = parse_updates() - if not updates.has_key(options.prepare): - print "%s is not available for installation. Abort." %options.prepare - sys.exit() - u = updates[options.prepare] - download_update(u) - prepare_update(u, False) - -if options.install is not None: - #probe_updates() - updates = parse_updates() - if not updates.has_key(options.install): - print "%s is not available for installation. Abort." %options.install - sys.exit() - u = updates[options.install] - download_update(u) - install_update(u) + if options.prepare is not None and not options.prepare_all: + probe_updates() + updates = parse_updates() + if not updates.has_key(options.prepare): + print "%s is not available for installation. Abort." %options.prepare + sys.exit(0) + u = updates[options.prepare] + download_update(u) + prepare_update(u, False) + + if options.install is not None and not options.install_all: + updates = parse_updates() + if not updates.has_key(options.install): + print "%s is not available for installation. Abort." %options.install + sys.exit(0) + u = updates[options.install] + download_update(u) + install_update(u) + +if __name__ == '__main__': + try: + options = get_options() + run_action(options) + except: + sys.exit(-1) -- 2.7.4