40 lines
980 B
Bash
40 lines
980 B
Bash
#!/usr/bin/env bash
|
|
"$APP" onearg "$@"
|
|
"$APP" exist "$1"
|
|
source "$APP" service_env "$1"
|
|
|
|
for SERVICE in "${SERVICE_REQUIRE[@]}"; do
|
|
"$APP" start "$SERVICE"
|
|
done
|
|
|
|
echo "[$APP_NAME] Starting '$1' ..."
|
|
if "$APP" service_running "$1"; then
|
|
echo "Service is already running."
|
|
exit 0
|
|
fi
|
|
|
|
if [ -e "$APP_SERVICES/$1/start" ]; then
|
|
source "$APP_SERVICES/$1/start"
|
|
fi
|
|
|
|
if [ "$SERVICE_RUN" = "" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ "$SERVICE_DEBUG" = "1" ]; then
|
|
SERVICE_RUN_RAW="cd \"$SERVICE_CD\"; echo \"* pwd: \$PWD\"; exec ${SERVICE_RUN//"/\\"}"
|
|
echo "* bash: $SERVICE_RUN_RAW"
|
|
exec gosu "$SERVICE_USER" bash -c "$SERVICE_RUN_RAW"
|
|
else
|
|
SERVICE_RUN_RAW="cd \"$SERVICE_CD\"; exec ${SERVICE_RUN//"/\\"}"
|
|
if [ "$SERVICE_SCREEN" = "1" ]; then
|
|
screen -dmS "$SERVICE_SCREEN_NAME" gosu "$SERVICE_USER" bash -c "$SERVICE_RUN_RAW"
|
|
else
|
|
gosu "$SERVICE_USER" nohup bash -c "$SERVICE_RUN_RAW" > /dev/null 2>&1 &
|
|
fi
|
|
fi
|
|
|
|
if [ -e "$APP_SERVICES/$1/await" ]; then
|
|
source "$APP_SERVICES/$1/await"
|
|
fi
|