ma7engine: ядро, шаблон панели, скаффолдер и доктор
Первый коммит существующего состояния. Ядро кладётся под git ради того, чтобы половины разъезжались в продуктовые репозитории через git subtree, а не копированием: subtree делает настоящий merge, хранит историю и умеет отдавать правки обратно. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019LeBkZLiQrvdECf5nfgiMz
This commit is contained in:
Executable
+44
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
# Поднимает демо-панель целиком: бэкенд в фоне, Vite на переднем плане.
|
||||
# Ctrl+C гасит обе половины.
|
||||
#
|
||||
# npm run demo (из корня ma7engine)
|
||||
# sh scripts/demo.sh (откуда угодно — пути считаются от самого скрипта)
|
||||
#
|
||||
# Учётка по умолчанию — admin / demo. Переопределяется окружением:
|
||||
# ADMIN_USER=root ADMIN_PASS=secret npm run demo
|
||||
set -eu
|
||||
|
||||
here=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
root=$(dirname "$here")
|
||||
|
||||
# Пароль и секрет обязательны для ядра (fail-closed), поэтому у демо есть
|
||||
# заведомо непригодные для прода значения по умолчанию.
|
||||
ADMIN_PASS=${ADMIN_PASS:-demo}
|
||||
ADMIN_JWT_SECRET=${ADMIN_JWT_SECRET:-dev-secret}
|
||||
export ADMIN_PASS ADMIN_JWT_SECRET
|
||||
|
||||
for half in backend frontend; do
|
||||
if [ ! -d "$root/$half/node_modules" ]; then
|
||||
echo "demo: ставлю зависимости в $half…"
|
||||
(cd "$root/$half" && npm i)
|
||||
fi
|
||||
done
|
||||
|
||||
(cd "$root/backend" && npm start) &
|
||||
backend=$!
|
||||
|
||||
# Гасим бэкенд вместе с собой — иначе он останется висеть на :8080. Идём по
|
||||
# всему дереву: между нами и слушающим порт node стоят подоболочка, npm и sh,
|
||||
# и сигнал в верхний процесс до нижнего сам не доходит — тот просто осиротеет.
|
||||
kill_tree() {
|
||||
for child in $(pgrep -P "$1" 2>/dev/null); do kill_tree "$child"; done
|
||||
kill "$1" 2>/dev/null || true
|
||||
}
|
||||
cleanup() { kill_tree "$backend"; }
|
||||
trap cleanup EXIT INT TERM
|
||||
|
||||
echo "demo: бэкенд на :8080, фронт поднимается на :5173 — открывать его"
|
||||
echo "demo: логин admin / ${ADMIN_PASS}"
|
||||
|
||||
cd "$root/frontend" && npm run dev
|
||||
Reference in New Issue
Block a user