Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e682607eac |
@@ -30,9 +30,6 @@ build-backend = "setuptools.build_meta"
|
|||||||
[project.scripts]
|
[project.scripts]
|
||||||
elironwars = "elironwars.app:app"
|
elironwars = "elironwars.app:app"
|
||||||
|
|
||||||
[project.entry-points."elironwars.ui"]
|
|
||||||
console = "elironwars.console:ConsoleUi"
|
|
||||||
|
|
||||||
[tool.isort]
|
[tool.isort]
|
||||||
profile = "black"
|
profile = "black"
|
||||||
src_paths = ["src", "tests"]
|
src_paths = ["src", "tests"]
|
||||||
|
|||||||
+3
-11
@@ -2,18 +2,14 @@ import argparse
|
|||||||
import logging
|
import logging
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from .entrypoints import Entrypoints
|
from .console import UI
|
||||||
from .level import Level
|
from .level import Level
|
||||||
from .menu import Action
|
from .menu import Action
|
||||||
from .mob import BaseMob, load_character
|
from .mob import BaseMob, load_character
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
# FIXME replace this global declaration
|
|
||||||
UI: Any = None
|
|
||||||
|
|
||||||
|
|
||||||
def play_room(room: list[BaseMob], level: Level) -> int:
|
def play_room(room: list[BaseMob], level: Level) -> int:
|
||||||
if room is None:
|
if room is None:
|
||||||
@@ -59,15 +55,13 @@ def play_donjon(level: Level) -> None:
|
|||||||
|
|
||||||
|
|
||||||
def app() -> None:
|
def app() -> None:
|
||||||
entrypoints = Entrypoints()
|
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
prog='elironwars',
|
prog='elironwars',
|
||||||
description='elironwars CLI',
|
description='elironwars CLI',
|
||||||
)
|
)
|
||||||
parser.add_argument('--player', default='Jamin')
|
parser.add_argument('--player', default='Jamin')
|
||||||
parser.add_argument('--ui', default='console', choices=entrypoints.ui.names)
|
parser.add_argument('--ui', default='cli')
|
||||||
parser.add_argument('--log-level', default='ERROR', choices=logging.getLevelNamesMapping().keys())
|
parser.add_argument('--log-level', default='ERROR')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
os.makedirs('logs', exist_ok=True)
|
os.makedirs('logs', exist_ok=True)
|
||||||
@@ -78,8 +72,6 @@ def app() -> None:
|
|||||||
if not loaded_character:
|
if not loaded_character:
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
global UI
|
|
||||||
UI = entrypoints.load_ui(args.ui)
|
|
||||||
UI.select_player(loaded_character)
|
UI.select_player(loaded_character)
|
||||||
|
|
||||||
# Créer des instances de BaseMob
|
# Créer des instances de BaseMob
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
import logging
|
|
||||||
from importlib.metadata import entry_points
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
|
||||||
|
|
||||||
|
|
||||||
class Entrypoints:
|
|
||||||
|
|
||||||
def __init__(self):
|
|
||||||
self.ui = entry_points(group='elironwars.ui')
|
|
||||||
|
|
||||||
def load_ui(self, ui):
|
|
||||||
logger.info('Loading ui %s', ui)
|
|
||||||
try:
|
|
||||||
ui_class = self.ui[ui].load()
|
|
||||||
return ui_class()
|
|
||||||
except KeyError:
|
|
||||||
logger.critical('Unable to load ui %s', ui)
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
import unittest
|
|
||||||
|
|
||||||
from elironwars.console import ConsoleUi
|
|
||||||
from elironwars.entrypoints import Entrypoints
|
|
||||||
|
|
||||||
|
|
||||||
class TestEntrypoints(unittest.TestCase):
|
|
||||||
|
|
||||||
def test_load_console_ui(self):
|
|
||||||
console_ep = 'console'
|
|
||||||
|
|
||||||
ep = Entrypoints()
|
|
||||||
self.assertIn(console_ep, ep.ui.names)
|
|
||||||
self.assertIsInstance(ep.load_ui(console_ep), ConsoleUi)
|
|
||||||
|
|
||||||
def test_load_unknown_ui(self):
|
|
||||||
unknown_ep = 'unknown'
|
|
||||||
|
|
||||||
ep = Entrypoints()
|
|
||||||
self.assertNotIn(unknown_ep, ep.ui.names)
|
|
||||||
self.assertIsNone(ep.load_ui(unknown_ep), ConsoleUi)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
unittest.main()
|
|
||||||
Reference in New Issue
Block a user