1 Commits

Author SHA1 Message Date
bbaudouin e682607eac Merge pull request ' cli & console output' (#4) from ux into develop
Reviewed-on: #4
2026-07-22 07:57:32 +01:00
4 changed files with 3 additions and 57 deletions
-3
View File
@@ -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
View File
@@ -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
-18
View File
@@ -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)
-25
View File
@@ -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()