added start script

This commit is contained in:
larssand
2026-06-18 22:00:56 +02:00
parent 0e42e42c53
commit 9fbcd5a5c4
5 changed files with 149 additions and 3 deletions

118
start.sh Executable file
View File

@@ -0,0 +1,118 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VENV_DIR="${FGAI_VENV_DIR:-$ROOT_DIR/.venv}"
PORT="${FGAI_SYSLOG_PORT:-5514}"
HOST="${FGAI_SYSLOG_HOST:-0.0.0.0}"
LOG_FILE="${FGAI_SYSLOG_FILE:-$ROOT_DIR/logs/fg_syslog.jsonl}"
LISTENER_LOG="${FGAI_LISTENER_LOG:-$ROOT_DIR/logs/fgai-listener.log}"
PID_FILE="${FGAI_PID_FILE:-$ROOT_DIR/run/fgai-listener.pid}"
usage() {
printf 'Usage: %s [start|stop|restart|status|tail|analyze|install]\n' "$0"
printf '\nDefault action: start\n'
printf '\nEnvironment overrides:\n'
printf ' FGAI_SYSLOG_PORT=%s\n' "$PORT"
printf ' FGAI_SYSLOG_HOST=%s\n' "$HOST"
printf ' FGAI_SYSLOG_FILE=%s\n' "$LOG_FILE"
printf ' FGAI_LISTENER_LOG=%s\n' "$LISTENER_LOG"
}
install_deps() {
if [ ! -x "$VENV_DIR/bin/python" ]; then
printf 'Creating venv: %s\n' "$VENV_DIR"
python3 -m venv "$VENV_DIR"
fi
printf 'Installing/updating fgAI dependencies...\n'
"$VENV_DIR/bin/python" -m pip install --upgrade pip
"$VENV_DIR/bin/python" -m pip install -e "$ROOT_DIR"
}
is_running() {
[ -f "$PID_FILE" ] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null
}
start_listener() {
install_deps
mkdir -p "$(dirname "$LOG_FILE")" "$(dirname "$LISTENER_LOG")" "$(dirname "$PID_FILE")"
touch "$LOG_FILE"
if is_running; then
printf 'fgAI syslog listener already running, pid %s\n' "$(cat "$PID_FILE")"
return 0
fi
nohup "$VENV_DIR/bin/fgai" listen-syslog \
--host "$HOST" \
--port "$PORT" \
--output "$LOG_FILE" \
--quiet > "$LISTENER_LOG" 2>&1 &
printf '%s\n' "$!" > "$PID_FILE"
printf 'Started fgAI syslog listener, pid %s\n' "$(cat "$PID_FILE")"
printf 'Input: udp://%s:%s\n' "$HOST" "$PORT"
printf 'Syslog file: %s\n' "$LOG_FILE"
printf 'Process log: %s\n' "$LISTENER_LOG"
}
stop_listener() {
if ! is_running; then
printf 'fgAI syslog listener is not running\n'
rm -f "$PID_FILE"
return 0
fi
kill "$(cat "$PID_FILE")"
rm -f "$PID_FILE"
printf 'Stopped fgAI syslog listener\n'
}
status_listener() {
if is_running; then
printf 'fgAI syslog listener running, pid %s\n' "$(cat "$PID_FILE")"
printf 'Input: udp://%s:%s\n' "$HOST" "$PORT"
printf 'Syslog file: %s\n' "$LOG_FILE"
return 0
fi
printf 'fgAI syslog listener is not running\n'
return 1
}
command="${1:-start}"
case "$command" in
start)
start_listener
;;
stop)
stop_listener
;;
restart)
stop_listener
start_listener
;;
status)
status_listener
;;
tail)
mkdir -p "$(dirname "$LOG_FILE")"
touch "$LOG_FILE"
tail -f "$LOG_FILE"
;;
analyze)
install_deps
"$VENV_DIR/bin/fgai" analyze-logs --logs "$LOG_FILE"
;;
install)
install_deps
;;
-h|--help|help)
usage
;;
*)
usage
exit 2
;;
esac