#!/usr/bin/env bash

set -e

APP_DIR="/opt/KYGnus-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
    # ======================================================

    open)

        URL="http://127.0.0.1:5005"

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

            xdg-open "${URL}"

        else

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

        fi

        ;;


    # ======================================================
    # RUN MANUALLY
    # ======================================================

    run)

        cd "${APP_DIR}"

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

        ;;


    # ======================================================
    # VERSION
    # ======================================================

    version)

        echo "KYGnus File Manager 1.0.1"

        ;;


    # ======================================================
    # 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 "  file-manager help"
        echo

        ;;


    # ======================================================
    # UNKNOWN COMMAND
    # ======================================================

    *)

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

        exit 1

        ;;

esac
