kopia lustrzana https://gitlab.com/marnanel/chapeau
Porównaj commity
2 Commity
a4d1e8ed03
...
a1c6007326
Autor | SHA1 | Data |
---|---|---|
Marnanel Thurman | a1c6007326 | |
Marnanel Thurman | 5cfdbc45a6 |
|
@ -1,4 +1,8 @@
|
|||
import argparse
|
||||
import os
|
||||
|
||||
DEFAULT_CONFIG_FILENAME = '/etc/kepi/kepi.conf'
|
||||
CONFIG_SECTION = 'kepi'
|
||||
|
||||
class Config:
|
||||
|
||||
|
@ -14,9 +18,10 @@ class Config:
|
|||
|
||||
def __getattr__(self, field):
|
||||
if field in self.settings:
|
||||
print("9199", self.settings, field)
|
||||
return self.settings[field]
|
||||
else:
|
||||
raise KeyError(field)
|
||||
raise AttributeError(field)
|
||||
|
||||
def parse_args(self, argparser):
|
||||
|
||||
|
@ -32,8 +37,6 @@ class Config:
|
|||
for sub in self.subcommands:
|
||||
sub(self.subparsers)
|
||||
|
||||
self.subcommands = None
|
||||
|
||||
args = self.argparser.parse_args()
|
||||
|
||||
for field in dir(args):
|
||||
|
@ -41,8 +44,6 @@ class Config:
|
|||
continue
|
||||
self.settings[field] = getattr(args, field)
|
||||
|
||||
# TODO here we will check the config file, and merge them in.
|
||||
|
||||
config = Config.__new__(Config)
|
||||
|
||||
def subcommand(fn):
|
||||
|
|
|
@ -0,0 +1,52 @@
|
|||
import os
|
||||
import sys
|
||||
import argparse
|
||||
import tempfile
|
||||
from kepi.config import config, subcommand
|
||||
|
||||
@subcommand
|
||||
def subcommands_for_testing(subparsers):
|
||||
parser = subparsers.add_parser('wombat')
|
||||
|
||||
parser.add_argument(
|
||||
'spong',
|
||||
help=(
|
||||
'the spong to wombat'
|
||||
),
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
'--fruit',
|
||||
default='orange',
|
||||
help=(
|
||||
'the fruit you like'
|
||||
),
|
||||
)
|
||||
|
||||
def test_config_add_subcommands():
|
||||
|
||||
old_argv = sys.argv
|
||||
sys.argv = ['kepi', 'wombat', 'foo']
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
config.parse_args(parser)
|
||||
|
||||
assert config.command=='wombat'
|
||||
assert config.spong=='foo'
|
||||
assert config.fruit=='orange'
|
||||
|
||||
sys.argv = old_argv
|
||||
|
||||
def test_config_optional():
|
||||
|
||||
old_argv = sys.argv
|
||||
sys.argv = ['kepi', 'wombat', 'foo', '--fruit', 'grapes']
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
config.parse_args(parser)
|
||||
|
||||
assert config.command=='wombat'
|
||||
assert config.spong=='foo'
|
||||
assert config.fruit=='grapes'
|
||||
|
||||
sys.argv = old_argv
|
Ładowanie…
Reference in New Issue