From aea68b8128910a7d93c3973541a497d51e46674b Mon Sep 17 00:00:00 2001 From: Brian Wiborg Date: Sat, 27 Sep 2025 15:36:07 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20Improve=20shell=20experience?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - more informative banner - make project singleton available via identifier `p` --- src/ohmyapi/cli.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/ohmyapi/cli.py b/src/ohmyapi/cli.py index a97355f..6479fe8 100644 --- a/src/ohmyapi/cli.py +++ b/src/ohmyapi/cli.py @@ -9,7 +9,9 @@ from ohmyapi.core import scaffolding, runtime from pathlib import Path app = typer.Typer(help="OhMyAPI — Django-flavored FastAPI scaffolding with tightly integrated TortoiseORM.") -banner = """OhMyAPI Shell | Project: {project_name}""" +banner = """OhMyAPI Shell | Project: {project_name} +Find your loaded project singleton via identifier: `p` +""" @app.command() @@ -46,16 +48,14 @@ def shell(root: str = "."): try: from IPython import start_ipython shell_vars = { - "settings": project.settings, - "project": Path(project_path).resolve(), + "p": project, } from traitlets.config.loader import Config c = Config() c.TerminalIPythonApp.display_banner = True - c.TerminalInteractiveShell.banner1 = banner.format(**{ + c.TerminalInteractiveShell.banner2 = banner.format(**{ "project_name": f"{f'{project.settings.PROJECT_NAME} ' if getattr(project.settings, 'PROJECT_NAME', '') else ''}[{Path(project_path).resolve()}]", }) - c.TerminalInteractiveShell.banner2 = " " start_ipython(argv=[], user_ns=shell_vars, config=c) except ImportError: typer.echo("IPython is not installed. Falling back to built-in Python shell.")