#!/usr/bin/env bash

APP_DIR="/opt/file-manager"
SERVICE_NAME="file-manager"

# ----------------------------------------------------------
# Detect service manager
# ----------------------------------------------------------

if command -v systemctl >/dev/null 2>&1; then

    SERVICE_MANAGER="systemd"

elif command -v sv >/dev/null 2>&1; then

    SERVICE_MANAGER="runit"

elif [[ -d "/etc/service" ]]; then

    SERVICE_MANAGER="runit"

else

    SERVICE_MANAGER="none"

fi

# ----------------------------------------------------------
# Start
# ----------------------------------------------------------

case "$1" in

    start)

        if [[ "${SERVICE_MANAGER}" == "systemd" ]]; then

            sudo systemctl start file-manager.service

        elif [[ "${SERVICE_MANAGER}" == "runit" ]]; then

            sudo sv start file-manager

        else

            echo "No supported service manager detected."
            exit 1

        fi

        ;;

    # ------------------------------------------------------
    # Stop
    # ------------------------------------------------------

    stop)

        if [[ "${SERVICE_MANAGER}" == "systemd" ]]; then

            sudo systemctl stop file-manager.service

        elif [[ "${SERVICE_MANAGER}" == "runit" ]]; then

            sudo sv stop file-manager

        else

            echo "No supported service manager detected."
            exit 1

        fi

        ;;

    # ------------------------------------------------------
    # Restart
    # ------------------------------------------------------

    restart)

        if [[ "${SERVICE_MANAGER}" == "systemd" ]]; then

            sudo systemctl restart file-manager.service

        elif [[ "${SERVICE_MANAGER}" == "runit" ]]; then

            sudo sv restart file-manager

        else

            echo "No supported service manager detected."
            exit 1

        fi

        ;;

    # ------------------------------------------------------
    # Status
    # ------------------------------------------------------

    status)

        if [[ "${SERVICE_MANAGER}" == "systemd" ]]; then

            systemctl status file-manager.service

        elif [[ "${SERVICE_MANAGER}" == "runit" ]]; then

            sv status file-manager

        else

            echo "No supported service manager detected."
            exit 1

        fi

        ;;

    # ------------------------------------------------------
    # Logs
    # ------------------------------------------------------

    logs)

        if [[ "${SERVICE_MANAGER}" == "systemd" ]]; then

            journalctl -u file-manager.service -f

        elif [[ "${SERVICE_MANAGER}" == "runit" ]]; then

            if [[ -f "/var/log/file-manager/current" ]]; then

                tail -f /var/log/file-manager/current

            else

                echo "runit log file not found:"
                echo
                echo "  /var/log/file-manager/current"
                echo
                echo "Try:"
                echo
                echo "  sudo sv status file-manager"
            fi

        else

            echo "No supported service manager detected."

        fi

        ;;

    # ------------------------------------------------------
    # Open browser
    # ------------------------------------------------------

    open)

        URL="http://127.0.0.1:5005"

        if command -v xdg-open >/dev/null 2>&1; then

            xdg-open "${URL}"

        else

            echo "Open:"
            echo
            echo "  ${URL}"

        fi

        ;;

    # ------------------------------------------------------
    # Run manually
    # ------------------------------------------------------

    run)

        cd "${APP_DIR}"

        exec "${APP_DIR}/venv/bin/python" \
            "${APP_DIR}/main.py"

        ;;

    # ------------------------------------------------------
    # Version
    # ------------------------------------------------------

    version)

        echo "KYGnus File Manager ${VERSION}"

        ;;

    # ------------------------------------------------------
    # Help
    # ------------------------------------------------------

    help|--help|-h|"")

        echo
        echo "KYGnus Web File Manager"
        echo
        echo "Usage:"
        echo
        echo "  file-manager start"
        echo "  file-manager stop"
        echo "  file-manager restart"
        echo "  file-manager status"
        echo "  file-manager logs"
        echo "  file-manager open"
        echo "  file-manager run"
        echo "  file-manager version"
        echo

        ;;

    # ------------------------------------------------------
    # Unknown command
    # ------------------------------------------------------

    *)

        echo "Unknown command: $1"
        echo
        echo "Run:"
        echo
        echo "  file-manager help"
        echo

        exit 1

        ;;

esac
