pytools: obmcutil: Use argparse

Change-Id: Id33e3802530aa1bf0cb2af88c16bd94f8bfa219d
Signed-off-by: Andrew Jeffery <andrew@aj.id.au>
diff --git a/pytools/obmcutil b/pytools/obmcutil
index 42f34e5..06d3fae 100644
--- a/pytools/obmcutil
+++ b/pytools/obmcutil
@@ -2,6 +2,7 @@
 
 import sys
 import dbus
+import argparse
 
 dbus_objects = {
     'power': {
@@ -61,6 +62,7 @@
         'interface_name': 'xyz.openbmc_project.State.Boot.Progress',
         'property': 'BootProgress',
     },
+    'state' : ['bmcstate', 'chassisstate', 'hoststate']
 }
 
 def run_one_command(dbus_bus, objinfo):
@@ -93,36 +95,15 @@
         run_one_command(dbus_bus, dbus_objects[command])
 
 def main():
-    # Commands that need to run multiple objects above
-    multicmd_objects = { 'state' : ['bmcstate', 'chassisstate', 'hoststate'] }
+    parser = argparse.ArgumentParser()
+    parser.add_argument('recipe', choices=sorted(dbus_objects.keys()))
+    args = parser.parse_args()
 
     dbus_bus = dbus.SystemBus()
-
-    if (len(sys.argv) == 1 or sys.argv[1] == "-h" or
-            (not(dbus_objects.has_key(sys.argv[1])) and
-            (not(multicmd_objects.has_key(sys.argv[1]))))):
-        print "Usage: obmcutil [command]"
-        print "Available commands:"
-        for name in sorted(dbus_objects.keys()):
-            m = ""
-            if (dbus_objects[name].has_key('property') == True):
-                m = " (" + dbus_objects[name]['interface_name'] + "->" + \
-                    dbus_objects[name]['property'] + ")"
-
-            print "\t" + name + m
-        print "Multi-Commands:"
-        for name in sorted(multicmd_objects.keys()):
-            print "\t" + name + " -> " + ",".join(multicmd_objects[name])
-        exit(0)
-
-    sys.argv.pop(0)
-    recipe = sys.argv.pop(0)
-
-    # Check if this is a multicmd command and update if it is
-    if(multicmd_objects.has_key(recipe)):
-        recipe = multicmd_objects[recipe]
-
-    run_all_commands(dbus_bus, recipe)
+    try:
+        run_all_commands(dbus_bus, dbus_objects[args.recipe], args)
+    finally:
+        dbus_bus.close()
 
 if __name__ == "__main__":
     main()