diff options
author | Devaev Maxim <[email protected]> | 2020-09-08 12:32:16 +0300 |
---|---|---|
committer | Devaev Maxim <[email protected]> | 2020-09-08 12:32:16 +0300 |
commit | d528a3002e53bb7a5b5e6d9b5385252372738fbf (patch) | |
tree | 9746fb7061c82ec101f01151a440e1659799df6e /kvmd/validators | |
parent | d932a937caede7f54c0f4384ce08f7ecc291af23 (diff) |
refactoring
Diffstat (limited to 'kvmd/validators')
-rw-r--r-- | kvmd/validators/__init__.py | 11 | ||||
-rw-r--r-- | kvmd/validators/kvm.py | 9 |
2 files changed, 16 insertions, 4 deletions
diff --git a/kvmd/validators/__init__.py b/kvmd/validators/__init__.py index d6caa835..d91b37bf 100644 --- a/kvmd/validators/__init__.py +++ b/kvmd/validators/__init__.py @@ -23,6 +23,7 @@ import re from typing import List +from typing import Set from typing import Mapping from typing import Sequence from typing import Callable @@ -62,13 +63,19 @@ def check_not_none_string(arg: Any, name: str, strip: bool=True) -> str: return arg -def check_in_list(arg: Any, name: str, variants: Union[Sequence, Mapping]) -> Any: +def check_in_list(arg: Any, name: str, variants: Union[Sequence, Mapping, Set]) -> Any: if arg not in variants: raise_error(arg, name) return arg -def check_string_in_list(arg: Any, name: str, variants: Union[Sequence[str], Mapping[str, Any]], lower: bool=True) -> str: +def check_string_in_list( + arg: Any, + name: str, + variants: Union[Sequence[str], Mapping[str, Any], Set[str]], + lower: bool=True, +) -> str: + arg = check_not_none_string(arg, name) if lower: arg = arg.lower() diff --git a/kvmd/validators/kvm.py b/kvmd/validators/kvm.py index 17895c47..5a4dd6c8 100644 --- a/kvmd/validators/kvm.py +++ b/kvmd/validators/kvm.py @@ -21,6 +21,8 @@ from typing import List +from typing import Set +from typing import Optional from typing import Any from ..keyboard.mappings import KEYMAP @@ -92,9 +94,12 @@ def valid_hid_mouse_wheel(arg: Any) -> int: # ===== -def valid_ugpio_driver(arg: Any) -> str: +def valid_ugpio_driver(arg: Any, variants: Optional[Set[str]]=None) -> str: name = "GPIO driver" - return check_len(check_re_match(arg, name, r"^[a-zA-Z_][a-zA-Z0-9_-]*$"), name, 255) + arg = check_len(check_re_match(arg, name, r"^[a-zA-Z_][a-zA-Z0-9_-]*$"), name, 255) + if variants is not None: + arg = check_string_in_list(arg, f"configured {name}", variants) + return arg def valid_ugpio_mode(arg: Any) -> str: |