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)