@@ -3,80 +3,134 @@ set -e
33
44# SIDEMANTIC_MODE: "serve" (default), "mcp", "api", or "both"
55MODE=" ${SIDEMANTIC_MODE:- serve} "
6- DEMO_ARGS=" "
7- if [ -n " $SIDEMANTIC_DEMO " ]; then
8- DEMO_ARGS=" --demo"
9- fi
106
11- # Build arg arrays for each command.
12- # serve accepts: --connection, --db, --host, --port, --username, --password
13- # mcp-serve accepts: --db only
7+ ENTRYPOINT_ARGS_FILE= $( mktemp )
8+ trap ' rm -f "$ENTRYPOINT_ARGS_FILE" ' EXIT
9+ printf ' %s\n ' " $@ " > " $ENTRYPOINT_ARGS_FILE "
1410
15- # Serve args
16- SERVE_ARGS=" --host 0.0.0.0"
17- if [ -n " $SIDEMANTIC_CONNECTION " ]; then
18- SERVE_ARGS=" $SERVE_ARGS --connection \" $SIDEMANTIC_CONNECTION \" "
19- fi
20- if [ -n " $SIDEMANTIC_DB " ]; then
21- SERVE_ARGS=" $SERVE_ARGS --db \" $SIDEMANTIC_DB \" "
22- fi
23- if [ -n " $SIDEMANTIC_USERNAME " ]; then
24- SERVE_ARGS=" $SERVE_ARGS --username \" $SIDEMANTIC_USERNAME \" "
25- fi
26- if [ -n " $SIDEMANTIC_PASSWORD " ]; then
27- SERVE_ARGS=" $SERVE_ARGS --password \" $SIDEMANTIC_PASSWORD \" "
28- fi
29- if [ -n " $SIDEMANTIC_PORT " ]; then
30- SERVE_ARGS=" $SERVE_ARGS --port \" $SIDEMANTIC_PORT \" "
31- fi
11+ run_serve () {
12+ set -- sidemantic serve --host 0.0.0.0
13+ if [ -n " $SIDEMANTIC_CONNECTION " ]; then
14+ set -- " $@ " --connection " $SIDEMANTIC_CONNECTION "
15+ fi
16+ if [ -n " $SIDEMANTIC_DB " ]; then
17+ set -- " $@ " --db " $SIDEMANTIC_DB "
18+ fi
19+ if [ -n " $SIDEMANTIC_USERNAME " ]; then
20+ set -- " $@ " --username " $SIDEMANTIC_USERNAME "
21+ fi
22+ if [ -n " $SIDEMANTIC_PASSWORD " ]; then
23+ set -- " $@ " --password " $SIDEMANTIC_PASSWORD "
24+ fi
25+ if [ -n " $SIDEMANTIC_PORT " ]; then
26+ set -- " $@ " --port " $SIDEMANTIC_PORT "
27+ fi
28+ if [ -n " $SIDEMANTIC_DEMO " ]; then
29+ set -- " $@ " --demo
30+ fi
31+ while IFS= read -r arg; do
32+ set -- " $@ " " $arg "
33+ done < " $ENTRYPOINT_ARGS_FILE "
34+ exec " $@ "
35+ }
3236
33- # MCP args (only --db is supported)
34- MCP_ARGS=" "
35- if [ -n " $SIDEMANTIC_DB " ]; then
36- MCP_ARGS=" $MCP_ARGS --db \" $SIDEMANTIC_DB \" "
37- fi
37+ run_mcp () {
38+ set -- sidemantic mcp-serve
39+ if [ -n " $SIDEMANTIC_DB " ]; then
40+ set -- " $@ " --db " $SIDEMANTIC_DB "
41+ fi
42+ if [ -n " $SIDEMANTIC_DEMO " ]; then
43+ set -- " $@ " --demo
44+ fi
45+ while IFS= read -r arg; do
46+ set -- " $@ " " $arg "
47+ done < " $ENTRYPOINT_ARGS_FILE "
48+ exec " $@ "
49+ }
3850
39- # HTTP API args
40- API_ARGS=" --host 0.0.0.0"
41- if [ -n " $SIDEMANTIC_CONNECTION " ]; then
42- API_ARGS=" $API_ARGS --connection \" $SIDEMANTIC_CONNECTION \" "
43- fi
44- if [ -n " $SIDEMANTIC_DB " ]; then
45- API_ARGS=" $API_ARGS --db \" $SIDEMANTIC_DB \" "
46- fi
47- if [ -n " $SIDEMANTIC_API_TOKEN " ]; then
48- API_ARGS=" $API_ARGS --auth-token \" $SIDEMANTIC_API_TOKEN \" "
49- fi
50- if [ -n " $SIDEMANTIC_API_PORT " ]; then
51- API_ARGS=" $API_ARGS --port \" $SIDEMANTIC_API_PORT \" "
52- fi
53- if [ -n " $SIDEMANTIC_MAX_REQUEST_BODY_BYTES " ]; then
54- API_ARGS=" $API_ARGS --max-request-body-bytes \" $SIDEMANTIC_MAX_REQUEST_BODY_BYTES \" "
55- fi
56- if [ -n " $SIDEMANTIC_CORS_ORIGINS " ]; then
57- OLD_IFS=" $IFS "
58- IFS=' ,'
59- for ORIGIN in $SIDEMANTIC_CORS_ORIGINS ; do
60- API_ARGS=" $API_ARGS --cors-origin \" $ORIGIN \" "
61- done
62- IFS=" $OLD_IFS "
63- fi
51+ run_api () {
52+ set -- sidemantic api-serve --host 0.0.0.0
53+ if [ -n " $SIDEMANTIC_CONNECTION " ]; then
54+ set -- " $@ " --connection " $SIDEMANTIC_CONNECTION "
55+ fi
56+ if [ -n " $SIDEMANTIC_DB " ]; then
57+ set -- " $@ " --db " $SIDEMANTIC_DB "
58+ fi
59+ if [ -n " $SIDEMANTIC_API_TOKEN " ]; then
60+ set -- " $@ " --auth-token " $SIDEMANTIC_API_TOKEN "
61+ fi
62+ if [ -n " $SIDEMANTIC_API_PORT " ]; then
63+ set -- " $@ " --port " $SIDEMANTIC_API_PORT "
64+ fi
65+ if [ -n " $SIDEMANTIC_MAX_REQUEST_BODY_BYTES " ]; then
66+ set -- " $@ " --max-request-body-bytes " $SIDEMANTIC_MAX_REQUEST_BODY_BYTES "
67+ fi
68+ if [ -n " $SIDEMANTIC_CORS_ORIGINS " ]; then
69+ OLD_IFS=$IFS
70+ IFS=' ,'
71+ for ORIGIN in $SIDEMANTIC_CORS_ORIGINS ; do
72+ set -- " $@ " --cors-origin " $ORIGIN "
73+ done
74+ IFS=$OLD_IFS
75+ fi
76+ if [ -n " $SIDEMANTIC_DEMO " ]; then
77+ set -- " $@ " --demo
78+ fi
79+ while IFS= read -r arg; do
80+ set -- " $@ " " $arg "
81+ done < " $ENTRYPOINT_ARGS_FILE "
82+ exec " $@ "
83+ }
84+
85+ run_both () {
86+ set -- sidemantic serve --host 0.0.0.0
87+ if [ -n " $SIDEMANTIC_CONNECTION " ]; then
88+ set -- " $@ " --connection " $SIDEMANTIC_CONNECTION "
89+ fi
90+ if [ -n " $SIDEMANTIC_DB " ]; then
91+ set -- " $@ " --db " $SIDEMANTIC_DB "
92+ fi
93+ if [ -n " $SIDEMANTIC_USERNAME " ]; then
94+ set -- " $@ " --username " $SIDEMANTIC_USERNAME "
95+ fi
96+ if [ -n " $SIDEMANTIC_PASSWORD " ]; then
97+ set -- " $@ " --password " $SIDEMANTIC_PASSWORD "
98+ fi
99+ if [ -n " $SIDEMANTIC_PORT " ]; then
100+ set -- " $@ " --port " $SIDEMANTIC_PORT "
101+ fi
102+ if [ -n " $SIDEMANTIC_DEMO " ]; then
103+ set -- " $@ " --demo
104+ fi
105+ " $@ " &
106+ SERVE_PID=$!
107+ trap ' kill "$SERVE_PID" 2>/dev/null; rm -f "$ENTRYPOINT_ARGS_FILE"' EXIT
108+
109+ set -- sidemantic mcp-serve
110+ if [ -n " $SIDEMANTIC_DB " ]; then
111+ set -- " $@ " --db " $SIDEMANTIC_DB "
112+ fi
113+ if [ -n " $SIDEMANTIC_DEMO " ]; then
114+ set -- " $@ " --demo
115+ fi
116+ while IFS= read -r arg; do
117+ set -- " $@ " " $arg "
118+ done < " $ENTRYPOINT_ARGS_FILE "
119+ exec " $@ "
120+ }
64121
65122case " $MODE " in
66123 serve)
67- eval exec sidemantic serve $SERVE_ARGS $DEMO_ARGS " $@ "
124+ run_serve
68125 ;;
69126 mcp)
70- eval exec sidemantic mcp-serve $MCP_ARGS $DEMO_ARGS " $@ "
127+ run_mcp
71128 ;;
72129 api)
73- eval exec sidemantic api-serve $API_ARGS $DEMO_ARGS " $@ "
130+ run_api
74131 ;;
75132 both)
76- eval sidemantic serve $SERVE_ARGS $DEMO_ARGS &
77- SERVE_PID=$!
78- trap " kill $SERVE_PID 2>/dev/null" EXIT
79- eval exec sidemantic mcp-serve $MCP_ARGS $DEMO_ARGS " $@ "
133+ run_both
80134 ;;
81135 * )
82136 echo " Unknown SIDEMANTIC_MODE: $MODE (use serve, mcp, api, or both)" >&2
0 commit comments