cli: accept name as key in `solaar config`

This commit is contained in:
Vinícius 2022-01-20 14:54:39 -03:00 committed by Peter F. Patel-Schneider
parent b93b4f6bc3
commit 136c351209
1 changed files with 6 additions and 3 deletions

View File

@ -18,6 +18,7 @@
from logitech_receiver import settings as _settings from logitech_receiver import settings as _settings
from logitech_receiver import settings_templates as _settings_templates from logitech_receiver import settings_templates as _settings_templates
from logitech_receiver.common import NamedInts as _NamedInts
from solaar import configuration as _configuration from solaar import configuration as _configuration
@ -182,7 +183,8 @@ def set(dev, setting, args):
elif setting.kind == _settings.KIND.multiple_toggle: elif setting.kind == _settings.KIND.multiple_toggle:
key = args.value_key key = args.value_key
ikey = to_int(key) all_keys = getattr(setting, 'choices_universe', None)
ikey = all_keys[int(key) if key.isdigit() else key] if isinstance(all_keys, _NamedInts) else to_int(key)
k = next((k for k in setting._labels if key == k), None) k = next((k for k in setting._labels if key == k), None)
if k is None and ikey is not None: if k is None and ikey is not None:
k = next((k for k in setting._labels if ikey == k), None) k = next((k for k in setting._labels if ikey == k), None)
@ -195,14 +197,15 @@ def set(dev, setting, args):
elif setting.kind == _settings.KIND.multiple_range: elif setting.kind == _settings.KIND.multiple_range:
key = args.value_key key = args.value_key
ikey = to_int(key) all_keys = getattr(setting, 'choices_universe', None)
ikey = all_keys[int(key) if key.isdigit() else key] if isinstance(all_keys, _NamedInts) else to_int(key)
if args.extra_subkey is None: if args.extra_subkey is None:
raise Exception('%s: setting needs a subkey' % (setting.name)) raise Exception('%s: setting needs a subkey' % (setting.name))
if args.extra2 is None or to_int(args.extra2) is None: if args.extra2 is None or to_int(args.extra2) is None:
raise Exception('%s: setting needs an integer value, not %s' % (setting.name, args.extra2)) raise Exception('%s: setting needs an integer value, not %s' % (setting.name, args.extra2))
if not setting._value: # ensure that there are values to look through if not setting._value: # ensure that there are values to look through
setting.read() setting.read()
k = next((k for k in setting._value if key == k), None) k = next((k for k in setting._value if key == ikey or key.isdigit() and ikey == int(key)), None)
if k is None and ikey is not None: if k is None and ikey is not None:
k = next((k for k in setting._value if ikey == k), None) k = next((k for k in setting._value if ikey == k), None)
item = setting._value[k] item = setting._value[k]