fancier missing required parameter
This commit is contained in:
parent
9d7badba5d
commit
ab2170e669
2 changed files with 22 additions and 14 deletions
|
@ -13,7 +13,7 @@ from dataclasses import dataclass, MISSING, fields
|
||||||
|
|
||||||
from setproctitle import setproctitle
|
from setproctitle import setproctitle
|
||||||
|
|
||||||
from .treepuncher import Treepuncher, Addon, ConfigObject
|
from .treepuncher import Treepuncher, Addon, ConfigObject, MissingParameterError
|
||||||
from .helpers import configure_logging
|
from .helpers import configure_logging
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -79,12 +79,15 @@ def main():
|
||||||
if args.server:
|
if args.server:
|
||||||
kwargs["server"] = args.server
|
kwargs["server"] = args.server
|
||||||
|
|
||||||
|
try:
|
||||||
client = Treepuncher(
|
client = Treepuncher(
|
||||||
args.name,
|
args.name,
|
||||||
args.server,
|
args.server,
|
||||||
legacy=args.mojang,
|
legacy=args.mojang,
|
||||||
use_packet_whitelist=args.use_packet_whitelist,
|
use_packet_whitelist=args.use_packet_whitelist,
|
||||||
)
|
)
|
||||||
|
except MissingParameterError as e:
|
||||||
|
return logging.error(e.args[0])
|
||||||
|
|
||||||
enabled_addons = set(
|
enabled_addons = set(
|
||||||
a.lower() for a in (
|
a.lower() for a in (
|
||||||
|
|
|
@ -88,6 +88,8 @@ class Addon:
|
||||||
async def cleanup(self):
|
async def cleanup(self):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
class MissingParameterError(Exception):
|
||||||
|
pass
|
||||||
|
|
||||||
class Treepuncher(
|
class Treepuncher(
|
||||||
GameState,
|
GameState,
|
||||||
|
@ -125,23 +127,26 @@ class Treepuncher(
|
||||||
|
|
||||||
authenticator : AuthInterface
|
authenticator : AuthInterface
|
||||||
|
|
||||||
def opt(k:str) -> Any:
|
def opt(k:str, required=False, default=None) -> Any:
|
||||||
return kwargs.get(k) or self.config['Treepuncher'].get(k)
|
v = kwargs.get(k) or self.config['Treepuncher'].get(k) or default
|
||||||
|
if not v and required:
|
||||||
|
raise MissingParameterError(f"Missing configuration parameter '{k}'")
|
||||||
|
return v
|
||||||
|
|
||||||
if not online_mode:
|
if not online_mode:
|
||||||
authenticator = OfflineAuthenticator(self.name)
|
authenticator = OfflineAuthenticator(self.name)
|
||||||
elif legacy:
|
elif legacy:
|
||||||
authenticator = MojangAuthenticator(
|
authenticator = MojangAuthenticator(
|
||||||
username= opt('username') or name,
|
username= opt('username', default=name, required=True),
|
||||||
password= opt('password')
|
password= opt('password')
|
||||||
)
|
)
|
||||||
if opt('legacy_token'):
|
if opt('legacy_token'):
|
||||||
authenticator.deserialize(json.loads(opt('legacy_token')))
|
authenticator.deserialize(json.loads(opt('legacy_token')))
|
||||||
else:
|
else:
|
||||||
authenticator = MicrosoftAuthenticator(
|
authenticator = MicrosoftAuthenticator(
|
||||||
client_id= opt('client_id'),
|
client_id= opt('client_id', required=True),
|
||||||
client_secret= opt('client_secret'),
|
client_secret= opt('client_secret', required=True),
|
||||||
redirect_uri= opt('redirect_uri'),
|
redirect_uri= opt('redirect_uri', required=True),
|
||||||
code= opt('code'),
|
code= opt('code'),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -161,7 +166,7 @@ class Treepuncher(
|
||||||
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING) # So it's way less spammy
|
logging.getLogger('apscheduler.executors.default').setLevel(logging.WARNING) # So it's way less spammy
|
||||||
self.scheduler.start(paused=True)
|
self.scheduler.start(paused=True)
|
||||||
|
|
||||||
super().__init__(opt('server'), online_mode=online_mode, authenticator=authenticator)
|
super().__init__(opt('server', required=True), online_mode=online_mode, authenticator=authenticator)
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
|
Loading…
Reference in a new issue