Skip to content

Commit fcda083

Browse files
committed
Include port in console run hint
1 parent 6d21b3d commit fcda083

File tree

3 files changed

+19
-5
lines changed

3 files changed

+19
-5
lines changed

src/textual_dev/renderables.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,16 @@
2121

2222

2323
class DevConsoleHeader:
24-
def __init__(self, verbose: bool = False) -> None:
24+
def __init__(self, port: int | None = None, verbose: bool = False) -> None:
25+
self.port = port
2526
self.verbose = verbose
2627

2728
def __rich_console__(
2829
self, console: Console, options: ConsoleOptions
2930
) -> RenderResult:
3031
preamble = Text.from_markup(
3132
f"[bold]Textual Development Console [magenta]v{version('textual')}\n"
32-
"[magenta]Run a Textual app with [reverse]textual run --dev my_app.py[/] to connect.\n"
33+
f"[magenta]Run a Textual app with [reverse]{self._run_command()}[/] to connect.\n"
3334
"[magenta]Press [reverse]Ctrl+C[/] to quit."
3435
)
3536
if self.verbose:
@@ -45,6 +46,12 @@ def __rich_console__(
4546
yield from line
4647
yield new_line
4748

49+
def _run_command(self) -> str:
50+
if self.port:
51+
return f"textual run --port {self.port} --dev my_app.py"
52+
else:
53+
return "textual run --dev my_app.py"
54+
4855

4956
class DevConsoleLog:
5057
"""Renderable representing a single log message

src/textual_dev/server.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ async def _on_startup(app: Application) -> None:
4141
def _run_devtools(
4242
verbose: bool, exclude: list[str] | None = None, port: int | None = None
4343
) -> None:
44-
app = _make_devtools_aiohttp_app(verbose=verbose, exclude=exclude)
44+
app = _make_devtools_aiohttp_app(port=port, verbose=verbose, exclude=exclude)
4545

4646
def noop_print(_: str) -> None:
4747
pass
@@ -63,6 +63,7 @@ def noop_print(_: str) -> None:
6363

6464
def _make_devtools_aiohttp_app(
6565
size_change_poll_delay_secs: float = DEFAULT_SIZE_CHANGE_POLL_DELAY_SECONDS,
66+
port: int | None = None,
6667
verbose: bool = False,
6768
exclude: list[str] | None = None,
6869
) -> Application:
@@ -73,7 +74,10 @@ def _make_devtools_aiohttp_app(
7374

7475
app["verbose"] = verbose
7576
app["service"] = DevtoolsService(
76-
update_frequency=size_change_poll_delay_secs, verbose=verbose, exclude=exclude
77+
update_frequency=size_change_poll_delay_secs,
78+
port=port,
79+
verbose=verbose,
80+
exclude=exclude,
7781
)
7882

7983
app.add_routes(

src/textual_dev/service.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,20 @@ class DevtoolsService:
2929
def __init__(
3030
self,
3131
update_frequency: float,
32+
port: int | None = None,
3233
verbose: bool = False,
3334
exclude: list[str] | None = None,
3435
) -> None:
3536
"""
3637
Args:
3738
update_frequency: The number of seconds to wait between
3839
sending updates of the console size to connected clients.
40+
port: Port console is running on.
3941
verbose: Enable verbose logging on client.
4042
exclude: List of log groups to exclude from output.
4143
"""
4244
self.update_frequency = update_frequency
45+
self.port = port
4346
self.verbose = verbose
4447
self.exclude = {name.upper() for name in exclude} if exclude else set()
4548
self.console = Console()
@@ -49,7 +52,7 @@ def __init__(
4952
async def start(self) -> None:
5053
"""Starts devtools tasks"""
5154
self.size_poll_task = asyncio.create_task(self._console_size_poller())
52-
self.console.print(DevConsoleHeader(verbose=self.verbose))
55+
self.console.print(DevConsoleHeader(port=self.port, verbose=self.verbose))
5356

5457
@property
5558
def clients_connected(self) -> bool:

0 commit comments

Comments
 (0)