#!/bin/sh
# flexa-app start-up script.

APP_DIR="/mnt/data/package"
APP_DAEMON=$(uci -q get flexa_agent.application.daemon)
APP_ENVS=$(uci -q get flexa_agent.application.envs)
APP_NAME=$(uci -q get flexa_agent.service.appl_name)
APP_PID_FILE="/var/run/${APP_NAME}.pid"
APP_BIN=$(uci -q get flexa_agent.application.entry_point)
USE_SCREEN=$(uci -q get flexa_agent.application.screen)
if [ "${USE_SCREEN}" == "true" ]; then
    APP_BIN="/usr/bin/screen -Dm -S flexa ${APP_BIN}"
fi

# In case of lua executable add package folder to default LUA search path,
# otherwise the interpreter will not be able to find any lua modules
# provided with the package
echo "$APP_BIN" |  grep -i '.*\.lua' && export LUA_PATH="${APP_DIR}/?.lua;;" || export LUA_PATH=""
LUA_CPATH="/usr/lib/lua/5.1/?.so"
export LUA_CPATH

start() {
    # Led1 to stead green, led 2 to steady red
    echo 0 > /sys/class/leds/barix:led1:red/brightness
    echo 100 > /sys/class/leds/barix:led1:green/brightness

    echo 0 > /sys/class/leds/barix:led2:green/brightness
    echo 100 > /sys/class/leds/barix:led2:red/brightness


    if [ -z "$APP_BIN" ]; then
        echo "Did not find any application to start"
        return 0
    fi
    # Just defer to start_wd().
    echo "${APP_NAME}: Starting the ${APP_NAME} application..."
    cd ${APP_DIR}
    if [ "$APP_DAEMON" = "true" ]; then
        barix-wd --pid-file="$APP_PID_FILE" --timeout=10 --background --start -- ${APP_BIN}
    else
        ./$APP_BIN start &
    fi
    echo "${APP_NAME}: Starting the ${APP_NAME} application...DONE"
}

stop() {
    echo 0 > /sys/class/leds/barix:led2:green/brightness
    echo 100 > /sys/class/leds/barix:led2:red/brightness

    if [ -z "$APP_BIN" ]; then
        echo "Did not find any application to stop"
        return 0
    fi
    # Just defer to stop_wd().
    echo "${APP_NAME}: Stopping the ${APP_NAME} application..."
    if [ "$APP_DAEMON" = "true" ]; then
        barix-wd --pid-file="$APP_PID_FILE" --stop --wait
    else
        cd ${APP_DIR}
        ./$APP_BIN stop &
    fi
    echo "${APP_NAME}: Stopping the ${APP_NAME} application...DONE"
}

restart() {
    stop
    start
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart|reload)
        restart
        ;;
    *)
        echo "Usage: $0 {start|stop|restart}"
        exit 1
esac

exit 0

