aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2023-07-06 09:04:42 +0100
committerSam James <sam@gentoo.org>2023-07-06 09:04:42 +0100
commite0fbc2fb33762211aa5e64175d525e66f4c257d4 (patch)
tree415a961e9291e1605ae8dea04c767658ee3ee39b
parentRevert "setup.py: Migrate from deprecated distutils to setuptools" (diff)
downloadmirrorselect-e0fbc2fb33762211aa5e64175d525e66f4c257d4.tar.gz
mirrorselect-e0fbc2fb33762211aa5e64175d525e66f4c257d4.tar.bz2
mirrorselect-e0fbc2fb33762211aa5e64175d525e66f4c257d4.zip
main: Fix --all option parsing
Avoid --all erroring out with "ERROR: Choose at most one of -s or -a". Bug: https://bugs.gentoo.org/872218 Fixes: 7caac017833b01e13028658effc502430c56d770 Thanks-to: <xpenev@gmail.com> Signed-off-by: Sam James <sam@gentoo.org>
-rwxr-xr-xmirrorselect/main.py11
1 files changed, 8 insertions, 3 deletions
diff --git a/mirrorselect/main.py b/mirrorselect/main.py
index 31f8e7b..7780bb7 100755
--- a/mirrorselect/main.py
+++ b/mirrorselect/main.py
@@ -145,6 +145,11 @@ class MirrorSelect(object):
self.output.white(" interactive:"),
" # mirrorselect -i -r",
))
+
+ def set_servers(option, opt_str, value, parser):
+ set_servers.user_configured = True
+ setattr(parser.values, option.dest, value)
+
parser = OptionParser(
formatter=ColoredFormatter(self.output), description=desc,
version='Mirrorselect version: %s' % version)
@@ -236,8 +241,8 @@ class MirrorSelect(object):
"-q", "--quiet", action="store_const", const=0, dest="verbosity",
help="Quiet mode")
group.add_option(
- "-s", "--servers", action="store", type="int", default=1,
- help="Specify Number of servers for Automatic Mode "
+ "-s", "--servers", action="callback", callback=set_servers,
+ type="int", default=1, help="Specify Number of servers for Automatic Mode "
"to select. this is only valid for download mirrors. "
"If this is not specified, a default of 1 is used.")
group.add_option(
@@ -271,7 +276,7 @@ class MirrorSelect(object):
if options.rsync and not (options.interactive or options.all_mirrors):
self.output.print_err('rsync servers can only be selected with -i or -a')
- if options.servers and options.all_mirrors:
+ if options.all_mirrors and hasattr(set_servers, 'user_configured'):
self.output.print_err('Choose at most one of -s or -a')
if options.interactive and (