#!/system/bin/sh

LOG=/data/local/ubuntu-services-boot.log
CHROOT=/system/bin/chroot-distro
ROOTFS=/data/local/chroot-distro/ubuntu
RUN_DIR=/dev/.ubuntu-services
PIDFILE=$RUN_DIR/launcher.pid

mkdir -p "$RUN_DIR"

if [ -r "$PIDFILE" ]; then
  old_pid=$(cat "$PIDFILE" 2>/dev/null)
  if [ -n "$old_pid" ] && [ -r "/proc/$old_pid/cmdline" ] && \
     tr '\0' ' ' < "/proc/$old_pid/cmdline" | grep -q '94-ubuntu-services.sh'; then
    exit 0
  fi
fi

echo $$ > "$PIDFILE"
trap 'rm -f "$PIDFILE"' EXIT INT TERM
echo "[$(date '+%F %T')] launcher started" >> "$LOG"

mounted=0
while true; do
  if [ ! -x "$CHROOT" ] || [ ! -x "$ROOTFS/usr/local/sbin/phone-server-services" ]; then
    echo "[$(date '+%F %T')] chroot or supervisor unavailable" >> "$LOG"
    sleep 30
    continue
  fi

  if [ "$mounted" -eq 0 ]; then
    "$CHROOT" mount ubuntu >> "$LOG" 2>&1
    if [ "$?" -ne 0 ]; then
      echo "[$(date '+%F %T')] mount failed" >> "$LOG"
      sleep 30
      continue
    fi
    echo "[$(date '+%F %T')] ubuntu mounted" >> "$LOG"
    mounted=1
  fi

  CHROOT_DISTRO_MOUNT=false "$CHROOT" command ubuntu \
    "/usr/local/sbin/phone-server-services" >> "$LOG" 2>&1
  echo "[$(date '+%F %T')] supervisor exited, restarting without remount" >> "$LOG"
  sleep 15
done
