Beispiel #1
0
    def _get_parserobj(self, option_list):
        """judged to parser type, return tp parser object

        :param option_list: parser option list
        :return: parser object, optparse.OptionParser or
                 argparse.ArgumentParser
        :rtype: parser object class
        """
        if '--version' in self.parselines[0]:
            if argparse and 'argparse' == self.parser_type:
                parser = ArgumentParser(version='dummy',
                                        formatter_class=RawDescriptionHelpFormatter)
            else:
                parser = OptionParser(version="dummy")
        else:
            if argparse and 'argparse' == self.parser_type:
                parser = ArgumentParser(
                    formatter_class=RawDescriptionHelpFormatter)
            else:
                parser = OptionParser()
        for opt in option_list:
            if opt['short'] and self.parser_type is 'optparse':
                if parser.has_option(opt['short']):
                    parser.remove_option(opt['short'])
                parser.add_option(opt['short'], opt['long'],
                                  metavar=opt['metavar'],
                                  help=opt['help'].strip())
            elif not opt['short'] and self.parser_type is 'optparse':
                if parser.has_option(opt['short']):
                    parser.remove_option(opt['short'])
                parser.add_option(opt['long'],
                                  metavar=opt['metavar'],
                                  help=opt['help'].strip())
            elif opt['long'] and opt['short'] and \
                    self.parser_type is 'argparse':
                if opt['metavar'] is None:
                    parser.add_argument(opt['short'], opt['long'],
                                        action='store_true',
                                        help=opt['help'].strip())
                else:
                    parser.add_argument(opt['short'], opt['long'],
                                        metavar=opt['metavar'],
                                        help=opt['help'].strip())
            elif opt['short'] and self.parser_type is 'argparse':
                if opt['metavar'] is None:
                    parser.add_argument(opt['short'],
                                        action='store_true',
                                        help=opt['help'].strip())
                else:
                    parser.add_argument(opt['short'],
                                        metavar=opt['metavar'],
                                        help=opt['help'].strip())
            elif not opt['short'] and self.parser_type is 'argparse':
                if opt['metavar'] is None:
                    parser.add_argument(opt['long'],
                                        action='store_true',
                                        help=opt['help'].strip())
                else:
                    parser.add_argument(opt['long'],
                                        metavar=opt['metavar'],
                                        help=opt['help'].strip())
            else:
                raise InvalidParserTypeError("Invalid paresr type.")
        return parser
Beispiel #2
0
    def _get_parserobj(self, option_list):
        """judged to parser type, return tp parser object

        :param option_list: parser option list
        :return: parser object, optparse.OptionParser or
                 argparse.ArgumentParser
        :rtype: parser object class
        """
        if '--version' in self.parselines[0]:
            if argparse and 'argparse' == self.parser_type:
                parser = ArgumentParser(
                    version='dummy',
                    formatter_class=RawDescriptionHelpFormatter)
            else:
                parser = OptionParser(version="dummy")
        else:
            if argparse and 'argparse' == self.parser_type:
                parser = ArgumentParser(
                    formatter_class=RawDescriptionHelpFormatter)
            else:
                parser = OptionParser()
        for opt in option_list:
            if opt['short'] and self.parser_type is 'optparse':
                if parser.has_option(opt['short']):
                    parser.remove_option(opt['short'])
                parser.add_option(opt['short'],
                                  opt['long'],
                                  metavar=opt['metavar'],
                                  help=opt['help'].strip())
            elif not opt['short'] and self.parser_type is 'optparse':
                if parser.has_option(opt['short']):
                    parser.remove_option(opt['short'])
                parser.add_option(opt['long'],
                                  metavar=opt['metavar'],
                                  help=opt['help'].strip())
            elif opt['long'] and opt['short'] and \
                    self.parser_type is 'argparse':
                if opt['metavar'] is None:
                    parser.add_argument(opt['short'],
                                        opt['long'],
                                        action='store_true',
                                        help=opt['help'].strip())
                else:
                    parser.add_argument(opt['short'],
                                        opt['long'],
                                        metavar=opt['metavar'],
                                        help=opt['help'].strip())
            elif opt['short'] and self.parser_type is 'argparse':
                if opt['metavar'] is None:
                    parser.add_argument(opt['short'],
                                        action='store_true',
                                        help=opt['help'].strip())
                else:
                    parser.add_argument(opt['short'],
                                        metavar=opt['metavar'],
                                        help=opt['help'].strip())
            elif not opt['short'] and self.parser_type is 'argparse':
                if opt['metavar'] is None:
                    parser.add_argument(opt['long'],
                                        action='store_true',
                                        help=opt['help'].strip())
                else:
                    parser.add_argument(opt['long'],
                                        metavar=opt['metavar'],
                                        help=opt['help'].strip())
            else:
                raise InvalidParserTypeError("Invalid paresr type.")
        return parser