Clean up and pythonize swup 34/5734/2
authorWilliam Douglas <william.douglas@intel.com>
Mon, 1 Jul 2013 23:26:51 +0000 (16:26 -0700)
committerWilliam Douglas <william.douglas@intel.com>
Wed, 17 Jul 2013 16:28:25 +0000 (09:28 -0700)
Add main test and handle exceptions to return exit failure.

Change-Id: I20aed4da12bf4f15116384b0faee84135aa82923
Signed-off-by: William Douglas <william.douglas@intel.com>
swup.py

diff --git a/swup.py b/swup.py
index 43d4c54..73dd9e4 100755 (executable)
--- 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)