commit:     e0fbc2fb33762211aa5e64175d525e66f4c257d4
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Jul  6 08:04:42 2023 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Jul  6 08:04:42 2023 +0000
URL:        https://gitweb.gentoo.org/proj/mirrorselect.git/commit/?id=e0fbc2fb

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 <AT> gmail.com>
Signed-off-by: Sam James <sam <AT> gentoo.org>

 mirrorselect/main.py | 11 ++++++++---
 1 file 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 (

Reply via email to