aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2025-07-14 22:32:50 +0200
committerEddy Pedroni <epedroni@pm.me>2025-07-14 22:32:50 +0200
commitfb63f6b5912171595065ea7498d1d770a175d1d9 (patch)
tree2cc11dba674b48160720282f48ca6b73995fdf28
parent90385e151543344b8894a17bedc31c1a2a01b5d1 (diff)
Add click interface to web UI
-rw-r--r--Makefile9
-rwxr-xr-xdeployment/start-solo-tool.sh6
-rw-r--r--web-project/pyproject.toml1
-rw-r--r--web-project/src/solo_tool_web.py15
4 files changed, 21 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index e382052..59898a5 100644
--- a/Makefile
+++ b/Makefile
@@ -17,8 +17,11 @@ clean:
uv pip install -r requirements.txt
touch .venv/touchfile
-gui: .venv/touchfile
- ./.venv/bin/solo-tool-web 8080
+web-deploy: .venv/touchfile
+ ./.venv/bin/solo-tool-web --no-reload --port 8080 --refresh 0.5
+
+web-dev: .venv/touchfile
+ ./.venv/bin/python web-project/src/solo_tool_web.py
install: deployment/solo-tool.service deployment/start-solo-tool.sh
mkdir -p ~/.config/systemd/user
@@ -33,4 +36,4 @@ uninstall:
rm ~/.config/systemd/user/solo-tool.service
systemctl --user daemon-reload
-.PHONY: all test clean gui install uninstall
+.PHONY: all test clean web-deploy web-dev install uninstall
diff --git a/deployment/start-solo-tool.sh b/deployment/start-solo-tool.sh
index d1d38f7..06a4d5d 100755
--- a/deployment/start-solo-tool.sh
+++ b/deployment/start-solo-tool.sh
@@ -3,8 +3,6 @@
# Get latest version
git pull
-# Bootstrap venv
-make
-
# Run web UI
-./.venv/bin/python web-project/src/solo_tool_web.py 80
+make web-deploy
+
diff --git a/web-project/pyproject.toml b/web-project/pyproject.toml
index 844de72..b175dcc 100644
--- a/web-project/pyproject.toml
+++ b/web-project/pyproject.toml
@@ -11,6 +11,7 @@ description = "A NiceGUI-based web frontend for the solo_tool library"
requires-python = ">=3.13"
dependencies = [
"nicegui==2.11.1",
+ "click==8.2.1",
"solo_tool>=2.0"
]
dynamic = ["version"]
diff --git a/web-project/src/solo_tool_web.py b/web-project/src/solo_tool_web.py
index 181dde2..20d2d11 100644
--- a/web-project/src/solo_tool_web.py
+++ b/web-project/src/solo_tool_web.py
@@ -5,6 +5,7 @@ from os.path import basename, splitext
from functools import partial
from nicegui import ui
from starlette.formparsers import MultiPartParser
+import click
from solo_tool import SoloTool
from solo_tool.session_manager import loadSession, saveSession
@@ -128,11 +129,19 @@ def landingPage():
for name, soloTool in sessions.items():
ui.button(name, on_click=partial(ui.navigate.to, f"/{name}"))
-def main(reload=False):
+def start(port, refresh, reload):
try:
- ui.run(reload=reload, binding_refresh_interval=0.5, port=int(sys.argv[1]))
+ ui.run(reload=reload, binding_refresh_interval=refresh, port=port)
except KeyboardInterrupt:
pass
+@click.command()
+@click.option("--port", type=int, default=8080, help="Port on which to bind.")
+@click.option("--refresh", type=float, default=0.5, help="Refresh interval in seconds.")
+@click.option("--reload/--no-reload", default=True, help="Auto-reload when files change.")
+def main(port, refresh, reload):
+ start(port, refresh, reload)
+
+# Hardcoded dev settings
if __name__ in {"__main__", "__mp_main__"}:
- main(True)
+ start(8080, 0.5, True)