added new start scripts

This commit is contained in:
onysd 2026-07-28 05:43:02 +03:00
parent d524e67b8a
commit 155a2435ce
5 changed files with 172 additions and 3 deletions

69
owpengram-server.bat Normal file
View file

@ -0,0 +1,69 @@
@echo off
setlocal enabledelayedexpansion
cd /d "%~dp0"
rem Checks prerequisites (Go, Python 3, and its packages), then launches the
rem interactive server-panel TUI (tui-panel\server-panel.py). Run this instead
rem of the TUI directly so missing prerequisites get a clear message instead
rem of a Python traceback.
echo == Checking prerequisites ==
set "PROBLEMS=0"
rem --- Go ---------------------------------------------------------------
where go >nul 2>&1
if errorlevel 1 (
echo [WARN] Go is not installed ^(needed to build owpengram-server / owpengram-admin-panel^)
echo Install it from: https://go.dev/dl/
set "PROBLEMS=1"
) else (
for /f "delims=" %%v in ('go version') do echo [ok] Go found: %%v
)
rem --- Python -------------------------------------------------------------
set "PYTHON="
where py >nul 2>&1
if not errorlevel 1 (
py -3 --version >nul 2>&1
if not errorlevel 1 set "PYTHON=py -3"
)
if not defined PYTHON (
where python >nul 2>&1
if not errorlevel 1 set "PYTHON=python"
)
if not defined PYTHON (
echo [WARN] Python 3 is not installed ^(needed to run the server-panel TUI^)
echo Install it from: https://www.python.org/downloads/
set "PROBLEMS=1"
) else (
for /f "delims=" %%v in ('!PYTHON! --version 2^>^&1') do echo [ok] Python found: %%v ^(!PYTHON!^)
)
rem --- Python dependencies --------------------------------------------------
if defined PYTHON (
set "MISSING="
for /f "delims=" %%m in ('!PYTHON! tui-panel\check_deps.py') do (
if not defined MISSING (set "MISSING=%%m") else (set "MISSING=!MISSING!, %%m")
)
if defined MISSING (
echo [WARN] Missing Python packages: !MISSING!
echo Install them with: !PYTHON! -m pip install -r tui-panel\requirements-panel.txt
set "PROBLEMS=1"
) else (
echo [ok] Python dependencies OK ^(textual, psutil, cryptography^)
)
)
if "%PROBLEMS%"=="1" (
echo.
echo [ERROR] missing prerequisites above -- install them and re-run this script
pause
exit /b 1
)
echo.
echo [cfg] All prerequisites OK, launching server panel...
echo.
!PYTHON! tui-panel\server-panel.py %*

63
owpengram-server.sh Normal file
View file

@ -0,0 +1,63 @@
#!/usr/bin/env bash
# Checks prerequisites (Go, Python 3, and its packages), then launches the
# interactive server-panel TUI (tui-panel/server-panel.py). Run this instead
# of the TUI directly so missing prerequisites get a clear message instead of
# a Python traceback.
set -uo pipefail
cd "$(dirname "$0")"
ok() { echo "[ok] $*"; }
warn() { echo "[WARN] $*"; }
die() { echo "[ERROR] $*" >&2; exit 1; }
echo "== Checking prerequisites =="
PROBLEMS=0
# --- Go -----------------------------------------------------------------
if command -v go >/dev/null 2>&1; then
ok "Go found: $(go version)"
else
warn "Go is not installed (needed to build owpengram-server / owpengram-admin-panel)"
echo " Install it from: https://go.dev/dl/"
PROBLEMS=1
fi
# --- Python ---------------------------------------------------------------
PYTHON=""
for cand in python3 python; do
if command -v "$cand" >/dev/null 2>&1; then
PYTHON="$cand"
break
fi
done
if [[ -z "$PYTHON" ]]; then
warn "Python 3 is not installed (needed to run the server-panel TUI)"
echo " Install it from: https://www.python.org/downloads/"
PROBLEMS=1
else
ok "Python found: $("$PYTHON" --version 2>&1) (${PYTHON})"
fi
# --- Python dependencies ----------------------------------------------------
if [[ -n "$PYTHON" ]]; then
MISSING="$("$PYTHON" tui-panel/check_deps.py)"
if [[ -n "$MISSING" ]]; then
warn "Missing Python packages: $(echo "$MISSING" | tr '\n' ' ')"
echo " Install them with: $PYTHON -m pip install -r tui-panel/requirements-panel.txt"
PROBLEMS=1
else
ok "Python dependencies OK (textual, psutil, cryptography)"
fi
fi
if [[ "$PROBLEMS" -ne 0 ]]; then
echo
die "missing prerequisites above -- install them and re-run this script"
fi
echo
echo "[cfg] All prerequisites OK, launching server panel..."
echo
exec "$PYTHON" tui-panel/server-panel.py "$@"

36
tui-panel/check_deps.py Normal file
View file

@ -0,0 +1,36 @@
#!/usr/bin/env python3
"""Reports which Python packages server-panel.py needs are missing.
Used by owpengram-server.sh / owpengram-server.bat before launching the
panel, so both launchers share one source of truth for the dependency list
instead of duplicating it in shell and batch syntax.
Prints one missing package's pip install name per line. Exit code is 0 if
everything is already installed, 1 if anything is missing.
"""
import importlib
import sys
REQUIRED = [
("textual", "textual"),
("psutil", "psutil"),
("cryptography", "cryptography"),
]
def main() -> int:
missing = []
for module_name, pip_name in REQUIRED:
try:
importlib.import_module(module_name)
except ImportError:
missing.append(pip_name)
for name in missing:
print(name)
return 1 if missing else 0
if __name__ == "__main__":
sys.exit(main())

View file

@ -11,8 +11,9 @@ processes and writes their PIDs to .server_panel.json next to .env; closing
the panel (Exit) does NOT stop them -- only the Stop action does. Reopening the panel (Exit) does NOT stop them -- only the Stop action does. Reopening
the panel later picks the same PIDs back up and reports live status. the panel later picks the same PIDs back up and reports live status.
Requires: pip install textual Requires: pip install -r tui-panel/requirements-panel.txt
Run: python server-panel.py Run: owpengram-server.sh (Linux/macOS) or owpengram-server.bat (Windows) from
the repo root -- they check prerequisites first, then launch this.
""" """
from __future__ import annotations from __future__ import annotations
@ -44,7 +45,7 @@ IS_WINDOWS = platform.system() == "Windows"
# real reading in the stats timer is already a proper since-last-call delta. # real reading in the stats timer is already a proper since-last-call delta.
psutil.cpu_percent(interval=None) psutil.cpu_percent(interval=None)
ROOT = Path(__file__).resolve().parent ROOT = Path(__file__).resolve().parent.parent
DEPLOY_DIR = ROOT / "deploy" DEPLOY_DIR = ROOT / "deploy"
BIN_DIR = ROOT / "bin" BIN_DIR = ROOT / "bin"
LOG_DIR = ROOT / "logs" LOG_DIR = ROOT / "logs"