move snake builder into __init__ of snakes file and use it into server class
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
import importlib
|
||||
|
||||
SNAKE_REGISTRY = {
|
||||
"TemplateSnake": "1.0.0",
|
||||
"DummSnake": "1.0.0",
|
||||
"LogicSnake": "1.1.0",
|
||||
"MasterSnake": "1.2.0",
|
||||
"BetterMasterSnake": "1.3.0",
|
||||
"BestBattleSnake": "2.5.0",
|
||||
}
|
||||
|
||||
def build_snake(selected_snake: str):
|
||||
if selected_snake not in SNAKE_REGISTRY:
|
||||
raise ValueError(f"Unknown snake: {selected_snake}")
|
||||
|
||||
snake_module = importlib.import_module(f"snakes.{selected_snake}")
|
||||
snake_class = getattr(snake_module, selected_snake)
|
||||
return snake_class()
|
||||
|
||||
def get_snake_version(selected_snake: str) -> str | None:
|
||||
version = SNAKE_REGISTRY.get(selected_snake)
|
||||
if version is None:
|
||||
return None
|
||||
return str(version)
|
||||
|
||||
class SnakeBuilder:
|
||||
@classmethod
|
||||
def build(self, selected_snake: str):
|
||||
return build_snake(selected_snake)
|
||||
|
||||
@classmethod
|
||||
def get_version(self, selected_snake: str) -> str | None:
|
||||
return get_snake_version(selected_snake)
|
||||
|
||||
Reference in New Issue
Block a user