(no commit message)
[sfa.git] / sfatables / sfatables
index 1428dc0..f4bb8a8 100755 (executable)
@@ -52,9 +52,8 @@ def create_parser_xml_ext(ext_dict):
     
     for k in ext_dict.keys():
         command = ext_dict[k]
-        pdb.set_trace()
         for arg in command.arguments:
-            parser.add_option(None,"--"+arg,dest=arg,help=command.help,metavar=command.operand)
+            parser.add_option('',"--"+arg['name'],dest=arg['name'],help=arg['help'],metavar=arg['target'])
 
     return parser
 
@@ -79,7 +78,8 @@ def main():
 
     command_dict = load_commands("sfatables.commands",commands.all)
     command_parser = create_parser(command_dict)
-    (options, args) = command_parser.parse_args()
+    (options, args) = command_parser.parse_args(pargs[0])
+    setattr(options, 'args', args)
 
     command = command_dict[options.command]
 
@@ -90,8 +90,17 @@ def main():
         match_parser = create_parser_xml_ext(match_dict)
         matches_str = ",".join(match_dict.keys())
         match_parser.add_option('-m','--match',dest='match_name',help='Match name (one of %s)'%matches_str, metavar = 'MATCH')
-
         (match_options, args) = match_parser.parse_args(pargs[1])
+        try:
+            match_name = match_options.match_name
+        except Exception:
+            print "Must specify match name with -m"
+
+        if (match_dict.has_key(match_name)):
+            setattr(match_options, 'arguments', match_dict[match_name].arguments)
+        else:
+            raise Exception('Match %s not found'%match_name)
+
     else:
         match_options=None
 
@@ -100,9 +109,19 @@ def main():
             raise Exception("Must specify a target for this command")
         target_dict = load_xml_extensions("sfatables.targets",targets.all)
         target_parser = create_parser_xml_ext(target_dict)
-        targets = ",".join(target_dict.keys())
-        (target_options, args) = target_parser.parse_args(pargs[2])
+        targets_str = ",".join(target_dict.keys())
         target_parser.add_option('-j','--jump',dest='target_name',help='Target name (one of %s)'%targets, metavar = 'TARGET')
+        (target_options, args) = target_parser.parse_args(pargs[2])
+        try:
+            target_name = target_options.target_name
+        except Exception:
+            print "Must specify target name with -m"
+
+#        if (target_dict.has_key(target_name)):
+#            setattr(target_options, 'arguments', target_dict[target_name].arguments)
+#        else:
+#            raise Exception('Target %s not found'%target_name)
+
     else:
         target_options = None