aboutsummaryrefslogtreecommitdiff
blob: 6ca785235db51c63a5eacda8f8af9e338e3853e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# Copyright 2013 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2

__all__ = ['ArgumentParser']

try:
	from argparse import ArgumentParser
except ImportError:
	# Compatibility with Python 2.6 and 3.1
	from optparse import OptionGroup, OptionParser

	from portage.localization import _

	class ArgumentParser(object):
		def __init__(self, **kwargs):
			add_help = kwargs.pop("add_help", None)
			if add_help is not None:
				kwargs["add_help_option"] = add_help
			parser = OptionParser(**kwargs)
			self._parser = parser
			self.add_argument = parser.add_option
			self.print_help = parser.print_help
			self.error = parser.error

		def add_argument_group(self, title=None, **kwargs):
			optiongroup = OptionGroup(self._parser, title, **kwargs)
			self._parser.add_option_group(optiongroup)
			return _ArgumentGroup(optiongroup)

		def parse_known_args(self, args=None, namespace=None):
			return self._parser.parse_args(args, namespace)

		def parse_args(self, args=None, namespace=None):
			args, argv = self.parse_known_args(args, namespace)
			if argv:
				msg = _('unrecognized arguments: %s')
				self.error(msg % ' '.join(argv))
			return args

	class _ArgumentGroup(object):
		def __init__(self, optiongroup):
			self.add_argument = optiongroup.add_option