[selinux-policy/f18] Change to handle exception on -p within option parser,

Daniel J Walsh dwalsh at fedoraproject.org
Wed Sep 26 19:24:33 UTC 2012


commit f1b4d621e2dff7dd62df0aa2bcf59fead64027ec
Author: rhatdan <dwalsh at redhat.com>
Date:   Wed Sep 26 15:23:43 2012 -0400

    Change to handle exception on -p within option parser,
    
    Make -a and -d exclusive

 segenman |   40 ++++++++++++++++++++++++----------------
 1 files changed, 24 insertions(+), 16 deletions(-)
---
diff --git a/segenman b/segenman
index 45c53dd..aacb7cd 100755
--- a/segenman
+++ b/segenman
@@ -21,6 +21,7 @@
 #                                        02111-1307  USA
 #
 #  
+import argparse
 import senetwork
 import seobject
 import selinux
@@ -914,31 +915,38 @@ SELinux policy allows the %s role%s can transition to the %s_r role.
 
 """ % (", ".join(troles), plural, self.domainname))
 
-if __name__ == '__main__':
+class CheckPath(argparse.Action):
+    def __call__(self, parser, namespace, values, option_string=None):
+        if not os.path.exists(values):
+		raise ValueError("%s does not exist" % values)
 
-	import argparse
+if __name__ == '__main__':
 	parser = argparse.ArgumentParser(description='Generate SELinux man pages')
-
-	parser.add_argument("-p", "--path", dest="path", default="/tmp", help="Path for SELinux man pages")
-	parser.add_argument("-l", "--list", dest="test_domains", default="", nargs="+", help="List of domains")
+	parser.add_argument("-p", "--path", dest="path", default="/tmp", 
+			    action=CheckPath,
+			    help="Path in which tool will create SELinux man pages")
+	group = parser.add_mutually_exclusive_group(required=True)
+	group.add_argument("-a", "--all", dest="all", default=False,
+			   action="store_true",
+			   help="All domains")
+	group.add_argument("-d", "--domain", nargs="+", 
+			   help="Domain name(s) of man pages to be created")
 
 	try:
 		args = parser.parse_args()
 		path = args.path
-
-		if len(args.test_domains) == 0:
+		if args.all:
 			test_domains = domains
 		else:
-			test_domains = args.test_domains
+			test_domains = args.domain
+
+		for domain in test_domains:
+			print domain
+			ManPage(domain, path)
 
+	except ValueError,e:
+		sys.stderr.write("%s: %s" % (e.__class__.__name__, str(e)))
+		sys.exit(1)
 	except Exception,e:
 		sys.stderr.write("exception %s: %s" % (e.__class__.__name__, str(e)))
 		sys.exit(1)
-
-	if not os.path.isdir(path):
-		sys.stderr.write("%s does not exist" % path)
-		sys.exit(1)
-
-	for domain in test_domains:
-		print domain
-		ManPage(domain, path)


More information about the scm-commits mailing list