blob: 94a946eccc73481ae41662af7c7d0ddee54aa7fe (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
#!/bin/sh
set -eu
root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)
PYTHONPATH="$root/src${PYTHONPATH:+:$PYTHONPATH}"
export PYTHONPATH
PYTHONUNBUFFERED="${PYTHONUNBUFFERED:-1}"
export PYTHONUNBUFFERED
if [ -n "${SAILFISH_DEVEL_MCP_LOG_DIR:-}" ]; then
log_dir=$SAILFISH_DEVEL_MCP_LOG_DIR
elif [ -n "${XDG_STATE_HOME:-}" ]; then
log_dir=$XDG_STATE_HOME/sailfish-devel-mcp
elif [ -n "${HOME:-}" ]; then
log_dir=$HOME/.local/state/sailfish-devel-mcp
else
log_dir=/tmp/sailfish-devel-mcp
fi
log_file=$log_dir/server.log
if mkdir -p "$log_dir" 2>/dev/null && touch "$log_file" 2>/dev/null; then
{
log_line() {
printf '[%s] %s\n' "$(date -Is)" "$*" >&2
}
log_exit_once() {
status=$1
if [ "$exit_logged" -eq 0 ]; then
log_line "sailfish-devel-mcp exited status=$status"
exit_logged=1
fi
}
on_signal() {
signal=$1
log_line "sailfish-devel-mcp wrapper received signal=$signal"
if [ -n "$child_pid" ]; then
kill "-$signal" "$child_pid" 2>/dev/null || true
wait "$child_pid"
status=$?
else
status=128
fi
log_exit_once "$status"
exit "$status"
}
child_pid=
exit_logged=0
trap 'on_signal HUP' HUP
trap 'on_signal INT' INT
trap 'on_signal QUIT' QUIT
trap 'on_signal TERM' TERM
trap 'status=$?; log_exit_once "$status"' EXIT
printf '\n' >&2
printf '[%s] starting sailfish-devel-mcp wrapper_pid=%s parent_pid=%s' \
"$(date -Is)" "$$" "${PPID:-unknown}" >&2
if [ "$#" -gt 0 ]; then
printf ' argv=' >&2
for arg do
printf ' %s' "$arg" >&2
done
fi
printf '\n' >&2
exec 3<&0
set +e
python3 -m sailfish_devel_mcp "$@" <&3 &
child_pid=$!
log_line "sailfish-devel-mcp python_pid=$child_pid"
wait "$child_pid"
status=$?
exec 3<&-
child_pid=
set -e
log_exit_once "$status"
exit "$status"
} 2>>"$log_file"
fi
exec python3 -m sailfish_devel_mcp "$@"
|