diff --git a/Makefile b/Makefile index 7a725b4..852efd4 100644 --- a/Makefile +++ b/Makefile @@ -5,17 +5,21 @@ GUNICORN=./.venv/bin/gunicorn GUNICORN_WORKERS = 1 PORT = 8081 -python: - $(PYTHON) + + +shell: + .venv/bin/snek shell dump: @$(PYTHON) -m snek.dump build: +serve: run + run: - .venv/usr/bin/snek + .venv/bin/snek serve #$(GUNICORN) -w $(GUNICORN_WORKERS) -k aiohttp.worker.GunicornWebWorker snek.gunicorn:app --bind 0.0.0.0:$(PORT) --reload install: ubuntu diff --git a/src/snek/__main__.py b/src/snek/__main__.py index 198ea1e..35e56e3 100644 --- a/src/snek/__main__.py +++ b/src/snek/__main__.py @@ -1,40 +1,32 @@ -import argparse +import click import uvloop from aiohttp import web import asyncio from snek.app import Application +from IPython import start_ipython +@click.group() +def cli(): + pass + +@cli.command() +@click.option('--port', default=8081, show_default=True, help='Port to run the application on') +@click.option('--host', default='0.0.0.0', show_default=True, help='Host to run the application on') +@click.option('--db_path', default='snek.db', show_default=True, help='Database path for the application') +def serve(port, host, db_path): + asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) + web.run_app( + Application(db_path=f"sqlite:///{db_path}"), port=port, host=host + ) + +@cli.command() +@click.option('--db_path', default='snek.db', show_default=True, help='Database path for the application') +def shell(db_path): + app = Application(db_path=f"sqlite:///{db_path}") + start_ipython(argv=[], user_ns={'app': app}) def main(): - - asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) - - parser = argparse.ArgumentParser(description="Run the web application.") - parser.add_argument( - "--port", - type=int, - default=8081, - help="Port to run the application on (default: 8081)", - ) - parser.add_argument( - "--host", - type=str, - default="0.0.0.0", - help="Host to run the application on (default: 0.0.0.0)", - ) - parser.add_argument( - "--db_path", - type=str, - default="snek.db", - help="Database path for the application (default: sqlite:///snek.db)", - ) - - args = parser.parse_args() - - web.run_app( - Application(db_path="sqlite:///" + args.db_path), port=args.port, host=args.host - ) - + cli() if __name__ == "__main__": main()