#!/bin/sh
STUDIO_TAG=${STUDIO_TAG:="studio-server"}

STUDIO_IP=${STUDIO_IP:="127.0.0.1"}
STUDIO_PORT=${STUDIO_PORT:="9999"}
STUDIO_DEBUG=${STUDIO_DEBUG:=""}
STUDIO_MODE=${STUDIO_MODE:="daemon"}
STUDIO_DATA=${STUDIO_DATA:="${0%/*}/data"}
PIDFILE="$STUDIO_DATA/.$TAG.pid"
PID=${PID:=""}
if [ -s "$PIDFILE" ]; then PID=$(cat "$PIDFILE"); fi

[ ! -z "$PID" ] && kill "$PID"

LOG_DIR="$STUDIO_DATA/log"
mkdir -p "$LOG_DIR"

PHP="php -S $STUDIO_IP:$STUDIO_PORT \
  -q \
  -d memory_limit=16M \
  -d display_errors=Off \
  -d error_reporting=E_ALL \
  -d date.timezone=UTC \
  -d cli_server.color=1 \
  "

PHP_CLI_SERVER_WORKERS=4

if [ "$STUDIO_DEBUG" != "" ]; then
  XDEBUG_SESSION=1
  PHP_CLI_SERVER_WORKERS=1
  PHP="$PHP \
      -d xdebug.mode=profile \
      -d xdebug.start_with_request=yes \
      -d xdebug.use_compression=false \
      "
fi
if [ "$STUDIO_INIT" != "" ]; then
    studio :build $STUDIO_INIT
fi
APP="${0%/*}/app.php"
if [ "$STUDIO_CONFIG" != "" ]; then
    REAL_APP=`realpath "${0%/*}/app.php"`
    APP="$STUDIO_DATA/$STUDIO_TAG.php"
    echo "<?php \$_SERVER += ['STUDIO_CONFIG'=>'$STUDIO_CONFIG','STUDIO_TAG'=>'$STUDIO_TAG','STUDIO_ENV'=>'$STUDIO_ENV','STUDIO_DATA'=>'$STUDIO_DATA']; require '$REAL_APP';" > "$APP"
fi
if [ "$STUDIO_MODE" = "daemon" ]; then
    $PHP "$APP" -s $TAG >> "$LOG_DIR/app.log" 2>&1 &
    echo $! > "$PIDFILE"
else
    exec $PHP "$APP" -s $STUDIO_TAG
fi
