]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
kresctl: tab-completion: remove redundant Command.completion overrides in all command... docs-develop-kres-ph09xl/deployments/5321
authorFrantisek Tobias <frantisek.tobias@nic.cz>
Fri, 11 Oct 2024 08:36:47 +0000 (10:36 +0200)
committerFrantisek Tobias <frantisek.tobias@nic.cz>
Fri, 11 Oct 2024 10:10:26 +0000 (12:10 +0200)
python/knot_resolver/client/command.py
python/knot_resolver/client/commands/cache.py
python/knot_resolver/client/commands/completion.py
python/knot_resolver/client/commands/config.py
python/knot_resolver/client/commands/convert.py
python/knot_resolver/client/commands/help.py
python/knot_resolver/client/commands/metrics.py
python/knot_resolver/client/commands/reload.py
python/knot_resolver/client/commands/schema.py
python/knot_resolver/client/commands/stop.py
python/knot_resolver/client/commands/validate.py

index c86252b237d1b89ad3696e11f09cdda64d101f80..814c30d4ad19821a20266783453237d19fb3e6f0 100644 (file)
@@ -136,6 +136,5 @@ class Command(ABC):
         raise NotImplementedError()
 
     @staticmethod
-    @abstractmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        raise NotImplementedError()
+    def completion(parser: argparse.ArgumentParser) -> CompWords:
+        return get_subparsers_words(parser._actions)  # pylint: disable=W0212
index b9c2e46627d960767316318541f6aed9bc70974d..0fc2cb5a77eef923f0caae7233f36b708099f486 100644 (file)
@@ -1,9 +1,9 @@
 import argparse
 import sys
 from enum import Enum
-from typing import Any, Dict, List, Optional, Tuple, Type
+from typing import Any, Dict, Optional, Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, get_subparsers_words, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 from knot_resolver.datamodel.cache_schema import CacheClearRPCSchema
 from knot_resolver.utils.modeling.exceptions import AggregateDataValidationError, DataValidationError
 from knot_resolver.utils.modeling.parsing import DataFormat, parse_json
@@ -97,10 +97,6 @@ class CacheCommand(Command):
 
         return cache_parser, CacheCommand
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return get_subparsers_words(parser._actions)
-
     def run(self, args: CommandArgs) -> None:
         if not self.operation:
             args.subparser.print_help()
index ecdc936cf3ba7f77c3a263728288b24fc882415a..6ac0ef91f8dec85d6dd9cfee6fd1e5ee1171ad90 100644 (file)
@@ -11,6 +11,7 @@ from knot_resolver.client.command import (
     get_subparsers_words,
     register_command,
 )
+from knot_resolver.client.commands.config import ConfigCommand
 
 
 class Shells(Enum):
@@ -58,10 +59,6 @@ class CompletionCommand(Command):
 
         return completion, CompletionCommand
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return get_subparsers_words(parser._actions)
-
     def run(self, args: CommandArgs) -> None:
         subparsers = args.parser._subparsers
         words: CompWords = {}
@@ -77,7 +74,10 @@ class CompletionCommand(Command):
                     cmd: Command = get_subparser_command(subparser)
                     subparser_args = self.comp_args[self.comp_args.index(uarg) + 1 :]
                     if subparser_args or self.space:
-                        words = cmd.completion(subparser_args, subparser)
+                        if isinstance(cmd, ConfigCommand):
+                            words = cmd.completion(subparser, subparser_args)
+                        else:
+                            words = cmd.completion(subparser)
                     break
                 elif uarg in ["-s", "--socket", "-c", "--config"]:
                     # if arg is socket config, skip next arg
@@ -87,7 +87,6 @@ class CompletionCommand(Command):
                     # uarg is valid (complete) arg, continue
                     continue
 
-
         # print completion words
         # based on required bash/fish shell format
         if self.shell == Shells.BASH:
index c3c976e461e8d6315f4eec95b3998d9300c43fb1..438bb3999b39537335796329a55e6257b2195d39 100644 (file)
@@ -169,8 +169,9 @@ class ConfigCommand(Command):
         return config, ConfigCommand
 
     @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        # words = parser_words(parser._actions)  # pylint: disable=W0212
+    def completion(parser: argparse.ArgumentParser, args: Optional[List[str]] = None) -> CompWords:
+        if args is None:
+            return Command.completion(parser)
 
         # for arg in args:
         #     if arg in words:
index 412ed334cc5995ec8290e1f6e254150ec75e04cb..a2173b74b486aa93f3760076b1d9fb80a6aac601 100644 (file)
@@ -1,9 +1,9 @@
 import argparse
 import sys
 from pathlib import Path
-from typing import List, Optional, Tuple, Type
+from typing import Optional, Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 from knot_resolver.datamodel import KresConfig
 from knot_resolver.datamodel.globals import Context, reset_global_validation_context, set_global_validation_context
 from knot_resolver.utils.modeling import try_to_parse
@@ -50,10 +50,6 @@ class ConvertCommand(Command):
 
         return convert, ConvertCommand
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return {}
-
     def run(self, args: CommandArgs) -> None:
         with open(self.input_file, "r") as f:
             data = f.read()
index 87306c2ab70a15362db8b96c6d1280e829b237d2..e7ab1b4fe2b5bf59910cc28d65431e9de9227516 100644 (file)
@@ -1,7 +1,7 @@
 import argparse
-from typing import List, Tuple, Type
+from typing import Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 
 
 @register_command
@@ -12,10 +12,6 @@ class HelpCommand(Command):
     def run(self, args: CommandArgs) -> None:
         args.parser.print_help()
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return {}
-
     @staticmethod
     def register_args_subparser(
         subparser: "argparse._SubParsersAction[argparse.ArgumentParser]",
index 058cad8b29406a4c5399d8934a1f759bce5e9212..b48e9c5731fdbee6282b4322749a3700a1a45fc2 100644 (file)
@@ -1,8 +1,8 @@
 import argparse
 import sys
-from typing import List, Optional, Tuple, Type
+from typing import Optional, Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 from knot_resolver.utils.modeling.parsing import DataFormat, parse_json
 from knot_resolver.utils.requests import request
 
@@ -42,10 +42,6 @@ class MetricsCommand(Command):
         )
         return metrics, MetricsCommand
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return {}
-
     def run(self, args: CommandArgs) -> None:
         response = request(args.socket, "GET", "metrics/prometheus" if self.prometheus else "metrics/json")
 
index c1350fc55333efd70a78a4fcbc4c05350f4f448d..6e1f2ddbc262d111c18fdf19c9fdfca85dd77877 100644 (file)
@@ -1,8 +1,8 @@
 import argparse
 import sys
-from typing import List, Tuple, Type
+from typing import Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 from knot_resolver.utils.requests import request
 
 
@@ -24,10 +24,6 @@ class ReloadCommand(Command):
 
         return reload, ReloadCommand
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return {}
-
     def run(self, args: CommandArgs) -> None:
         response = request(args.socket, "POST", "reload")
 
index 0c63f398e976a79d68e64efebf9d1eedb41965dc..85e62ed44be42f7b402e8bdad1fd5d4deada6572 100644 (file)
@@ -1,9 +1,9 @@
 import argparse
 import json
 import sys
-from typing import List, Optional, Tuple, Type
+from typing import Optional, Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 from knot_resolver.datamodel import kres_config_json_schema
 from knot_resolver.utils.requests import request
 
@@ -33,11 +33,6 @@ class SchemaCommand(Command):
 
         return schema, SchemaCommand
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return {}
-        # return parser_words(parser._actions)  # pylint: disable=W0212
-
     def run(self, args: CommandArgs) -> None:
         if self.live:
             response = request(args.socket, "GET", "schema")
index 35baf36ca244cbe9de08ade0bedaba41f45453dc..37748e1cc42c84a907db765a91d597b9aa762847 100644 (file)
@@ -1,8 +1,8 @@
 import argparse
 import sys
-from typing import List, Tuple, Type
+from typing import Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 from knot_resolver.utils.requests import request
 
 
@@ -26,7 +26,3 @@ class StopCommand(Command):
         if response.status != 200:
             print(response, file=sys.stderr)
             sys.exit(1)
-
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return {}
index f7477748145436b0323a5ea31b097b999d684eea..de1b44e1d7d7a8fbf5ec39e0b3b680b211f7135e 100644 (file)
@@ -1,9 +1,9 @@
 import argparse
 import sys
 from pathlib import Path
-from typing import List, Tuple, Type
+from typing import Tuple, Type
 
-from knot_resolver.client.command import Command, CommandArgs, CompWords, register_command
+from knot_resolver.client.command import Command, CommandArgs, register_command
 from knot_resolver.datamodel import KresConfig
 from knot_resolver.datamodel.globals import Context, reset_global_validation_context, set_global_validation_context
 from knot_resolver.utils.modeling import try_to_parse
@@ -39,10 +39,6 @@ class ValidateCommand(Command):
 
         return validate, ValidateCommand
 
-    @staticmethod
-    def completion(args: List[str], parser: argparse.ArgumentParser) -> CompWords:
-        return {}
-
     def run(self, args: CommandArgs) -> None:
         if self.input_file:
             with open(self.input_file, "r") as f: