Strings setting works like Server from CLI
This commit is contained in:
parent
69345b4b0e
commit
d8630a02d9
2 changed files with 20 additions and 11 deletions
|
@ -192,7 +192,17 @@ class MaxKeyFee(Setting[dict]):
|
|||
)
|
||||
|
||||
|
||||
class Servers(Setting[list]):
|
||||
class ListSetting(Setting[list]):
|
||||
|
||||
def contribute_to_argparse(self, parser: ArgumentParser):
|
||||
parser.add_argument(
|
||||
self.cli_name,
|
||||
help=self.doc,
|
||||
action='append'
|
||||
)
|
||||
|
||||
|
||||
class Servers(ListSetting):
|
||||
|
||||
def validate(self, val):
|
||||
assert isinstance(val, (tuple, list)), \
|
||||
|
@ -225,15 +235,8 @@ class Servers(Setting[list]):
|
|||
return [f"{host}:{port}" for host, port in value]
|
||||
return value
|
||||
|
||||
def contribute_to_argparse(self, parser: ArgumentParser):
|
||||
parser.add_argument(
|
||||
self.cli_name,
|
||||
help=self.doc,
|
||||
action='append'
|
||||
)
|
||||
|
||||
|
||||
class Strings(Setting[list]):
|
||||
class Strings(ListSetting):
|
||||
|
||||
def validate(self, val):
|
||||
assert isinstance(val, (tuple, list)), \
|
||||
|
@ -268,7 +271,7 @@ class ArgumentAccess:
|
|||
def load(self, args):
|
||||
for setting in self.configuration.get_settings():
|
||||
value = getattr(args, setting.name, NOT_SET)
|
||||
if value != NOT_SET and not (isinstance(setting, Servers) and value is None):
|
||||
if value != NOT_SET and not (isinstance(setting, ListSetting) and value is None):
|
||||
self.args[setting.name] = setting.deserialize(value)
|
||||
|
||||
def __contains__(self, item: str):
|
||||
|
|
|
@ -4,7 +4,7 @@ import types
|
|||
import tempfile
|
||||
import unittest
|
||||
import argparse
|
||||
from lbrynet.conf import Config, BaseConfig, String, Integer, Toggle, Servers, NOT_SET
|
||||
from lbrynet.conf import Config, BaseConfig, String, Integer, Toggle, Servers, Strings, NOT_SET
|
||||
from lbrynet.error import InvalidCurrencyError
|
||||
|
||||
|
||||
|
@ -14,6 +14,7 @@ class TestConfig(BaseConfig):
|
|||
test_false_toggle = Toggle('toggle help', False)
|
||||
test_true_toggle = Toggle('toggle help', True)
|
||||
servers = Servers('servers help', [('localhost', 80)])
|
||||
strings = Strings('cheese', ['string'])
|
||||
|
||||
|
||||
class ConfigurationTests(unittest.TestCase):
|
||||
|
@ -54,6 +55,7 @@ class ConfigurationTests(unittest.TestCase):
|
|||
self.assertTrue(c.test_true_toggle)
|
||||
self.assertFalse(c.test_false_toggle)
|
||||
self.assertEqual(c.servers, [('localhost', 80)])
|
||||
self.assertEqual(c.strings, ['string'])
|
||||
|
||||
args = parser.parse_args(['--test-str', 'blah'])
|
||||
c = TestConfig.create_from_arguments(args)
|
||||
|
@ -80,6 +82,10 @@ class ConfigurationTests(unittest.TestCase):
|
|||
c = TestConfig.create_from_arguments(args)
|
||||
self.assertEqual(c.servers, [('localhost', 1), ('192.168.0.1', 2)])
|
||||
|
||||
args = parser.parse_args(['--strings=cheddar', '--strings=mozzarella'])
|
||||
c = TestConfig.create_from_arguments(args)
|
||||
self.assertEqual(c.strings, ['cheddar', 'mozzarella'])
|
||||
|
||||
def test_environment(self):
|
||||
c = TestConfig()
|
||||
self.assertEqual(c.test_str, 'the default')
|
||||
|
|
Loading…
Reference in a new issue