
#!/usr/bin/env bash

###############################################################################
# KYGnus Web File Manager - Debian Package Builder
#
# Package:
#   ourfiles
#
# Version:
#   1.0.2
#
# Important:
#   main.py is NOT modified by this package.
#
# User handling:
#   The package detects the user who performed:
#
#       sudo dpkg -i ourfiles_*.deb
#
#   and runs Flask as that user.
#
# Therefore the existing:
#
#       getpass.getuser()
#
# in main.py resolves to the correct user instead of root.
#
###############################################################################

set -e

# ============================================================================
# Package Information
# ============================================================================

APP_NAME="ourfiles"
VERSION="1.0.2"
ARCHITECTURE="amd64"

MAINTAINER="KYGnus <kygnus.co@proton.me>"
DESCRIPTION="KYGnus Web File Manager - Web-based Linux file management platform"

APP_PORT="5010"
APP_URL="http://127.0.0.1:${APP_PORT}"

# ============================================================================
# Project Paths
# ============================================================================

PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

DEB_DIR="${PROJECT_DIR}/deb_package"

DEB_ROOT="${DEB_DIR}/${APP_NAME}_${VERSION}_${ARCHITECTURE}"

PACKAGE_FILE="${PROJECT_DIR}/${APP_NAME}_${VERSION}_${ARCHITECTURE}.deb"

# ============================================================================
# Installation Paths
# ============================================================================

APP_INSTALL_DIR="/usr/share/${APP_NAME}"

CONFIG_DIR="/etc/${APP_NAME}"

DATA_DIR="/var/lib/${APP_NAME}"

UPLOAD_DIR="${DATA_DIR}/uploads"
REPORT_DIR="${DATA_DIR}/reports"
LOG_DIR="${DATA_DIR}/logs"

BIN_DIR="/usr/bin"
BIN_FILE="${BIN_DIR}/${APP_NAME}"

DESKTOP_DIR="/usr/share/applications"

# IMPORTANT:
# Do NOT use file-manager.desktop because antiX desktop-defaults-antix
# already owns that filename.
DESKTOP_FILE="${DESKTOP_DIR}/kygnus-${APP_NAME}.desktop"

DOC_DIR="/usr/share/doc/${APP_NAME}"

SYSTEMD_FILE="/etc/systemd/system/${APP_NAME}.service"

# ============================================================================
# Header
# ============================================================================

echo
echo "============================================================"
echo "       KYGnus Web File Manager .deb Builder"
echo "============================================================"
echo
echo "Package:       ${APP_NAME}"
echo "Version:       ${VERSION}"
echo "Architecture:  ${ARCHITECTURE}"
echo "Port:          ${APP_PORT}"
echo "URL:           ${APP_URL}"
echo
echo "Application:   ${APP_INSTALL_DIR}"
echo "Config:        ${CONFIG_DIR}"
echo "Data:          ${DATA_DIR}"
echo "Launcher:      ${BIN_FILE}"
echo "Desktop:       ${DESKTOP_FILE}"
echo

# ============================================================================
# Bash Check
# ============================================================================

if [ -z "${BASH_VERSION:-}" ]; then

    echo "ERROR: This script must be executed with Bash."
    echo
    echo "Run:"
    echo
    echo "  bash ./build-deb"
    echo

    exit 1

fi

# ============================================================================
# Root Check
# ============================================================================

if [ "${EUID}" -eq 0 ]; then

    echo "ERROR: Do not run build-deb as root."
    echo
    echo "Run:"
    echo
    echo "  ./build-deb"
    echo

    exit 1

fi

# ============================================================================
# Build Dependencies
# ============================================================================

echo "Checking build dependencies..."

REQUIRED_COMMANDS=(
    dpkg-deb
    python3
    rsync
)

for CMD in "${REQUIRED_COMMANDS[@]}"; do

    if ! command -v "${CMD}" >/dev/null 2>&1; then

        echo
        echo "ERROR: ${CMD} is not installed."
        echo
        echo "Install:"
        echo
        echo "  sudo apt install ${CMD}"
        echo

        exit 1

    fi

done

echo "Build dependencies OK."
echo

# ============================================================================
# Python venv Check
# ============================================================================

echo "Checking Python venv support..."

if ! python3 -m venv --help >/dev/null 2>&1; then

    echo
    echo "ERROR: python3-venv is not installed."
    echo
    echo "Install:"
    echo
    echo "  sudo apt install python3-venv"
    echo

    exit 1

fi

echo "Python venv support OK."
echo

# ============================================================================
# Source Validation
# ============================================================================

echo "Checking application source..."

cd "${PROJECT_DIR}"

if [ ! -f "main.py" ]; then

    echo
    echo "ERROR: main.py not found."
    echo
    echo "Expected:"
    echo
    echo "  ${PROJECT_DIR}/main.py"
    echo

    exit 1

fi

if [ ! -f "requirements.txt" ]; then

    echo
    echo "ERROR: requirements.txt not found."
    echo

    exit 1

fi

if [ ! -d "templates" ]; then

    echo
    echo "ERROR: templates/ directory not found."
    echo

    exit 1

fi

if [ ! -d "static" ]; then

    echo
    echo "ERROR: static/ directory not found."
    echo

    exit 1

fi

echo "main.py found."
echo "requirements.txt found."
echo "templates/ found."
echo "static/ found."
echo

# ============================================================================
# Python Syntax Check
# ============================================================================

echo "Checking Python syntax..."

python3 -m py_compile main.py

echo "Python syntax OK."
echo

# ============================================================================
# Clean Previous Build
# ============================================================================

echo "Cleaning previous build..."

rm -rf "${DEB_DIR}"

rm -f "${PACKAGE_FILE}"

mkdir -p "${DEB_ROOT}"

echo "Build directory cleaned."
echo

# ============================================================================
# Debian Package Structure
# ============================================================================

echo "Creating Debian package structure..."

mkdir -p "${DEB_ROOT}/DEBIAN"

mkdir -p "${DEB_ROOT}${APP_INSTALL_DIR}"

mkdir -p "${DEB_ROOT}${CONFIG_DIR}"

mkdir -p "${DEB_ROOT}${DATA_DIR}"
mkdir -p "${DEB_ROOT}${UPLOAD_DIR}"
mkdir -p "${DEB_ROOT}${REPORT_DIR}"
mkdir -p "${DEB_ROOT}${LOG_DIR}"

mkdir -p "${DEB_ROOT}${BIN_DIR}"

mkdir -p "${DEB_ROOT}${DESKTOP_DIR}"

mkdir -p "${DEB_ROOT}${DOC_DIR}"

echo "Package structure created."
echo

# ============================================================================
# Copy Application
# ============================================================================

echo "Copying application files..."

rsync -a \
    --exclude=".git" \
    --exclude=".gitignore" \
    --exclude="venv" \
    --exclude="env" \
    --exclude=".venv" \
    --exclude="deb_package" \
    --exclude="build" \
    --exclude="*.deb" \
    --exclude="__pycache__" \
    --exclude="*.pyc" \
    --exclude="*.pyo" \
    --exclude=".pytest_cache" \
    --exclude=".mypy_cache" \
    --exclude=".idea" \
    --exclude=".vscode" \
    ./ \
    "${DEB_ROOT}${APP_INSTALL_DIR}/"

echo "Application copied."
echo

# ============================================================================
# DEBIAN/control
# ============================================================================

echo "Creating DEBIAN/control..."

cat > "${DEB_ROOT}/DEBIAN/control" <<EOF
Package: ${APP_NAME}
Version: ${VERSION}
Section: utils
Priority: optional
Architecture: ${ARCHITECTURE}
Maintainer: ${MAINTAINER}
Depends: python3, python3-venv, curl, xdg-utils
Description: ${DESCRIPTION}
 KYGnus Web File Manager is a Flask-based web file manager.
 It provides file browsing, upload, download, copy, move,
 rename, delete, chmod, compression and ZIP extraction.
EOF

echo "control created."
echo

# ============================================================================
# DEBIAN/preinst
# ============================================================================

echo "Creating DEBIAN/preinst..."

cat > "${DEB_ROOT}/DEBIAN/preinst" <<'EOF'
#!/usr/bin/env bash

set -e

echo
echo "Preparing KYGnus Web File Manager installation..."
echo

# ============================================================================
# Python
# ============================================================================

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

    echo "ERROR: python3 is required."
    exit 1

fi

if ! python3 -m venv --help >/dev/null 2>&1; then

    echo
    echo "ERROR: python3-venv is required."
    echo
    echo "Install:"
    echo
    echo "  sudo apt install python3-venv"
    echo

    exit 1

fi

# ============================================================================
# Directories
# ============================================================================

mkdir -p /etc/ourfiles

mkdir -p /var/lib/ourfiles
mkdir -p /var/lib/ourfiles/uploads
mkdir -p /var/lib/ourfiles/reports
mkdir -p /var/lib/ourfiles/logs

exit 0
EOF

chmod 755 "${DEB_ROOT}/DEBIAN/preinst"

echo "preinst created."
echo

# ============================================================================
# Configuration
# ============================================================================

echo "Creating configuration..."

cat > "${DEB_ROOT}${CONFIG_DIR}/settings.py" <<'EOF'
# ============================================================
# KYGnus Web File Manager Configuration
# ============================================================

# NOTE:
# The current main.py does not import this file.
#
# It is provided as the package configuration reference.
#
# User selection is handled by the launcher/system service.

HOST = "0.0.0.0"

PORT = 5010

DEBUG = False

UPLOAD_DIR = "/var/lib/ourfiles/uploads"

REPORT_DIR = "/var/lib/ourfiles/reports"

LOG_DIR = "/var/lib/ourfiles/logs"

# Empty means:
#
# /home/<FILE_MANAGER_USER>
#
FILE_MANAGER_ROOT = ""

MAX_CONTENT_LENGTH = 0
EOF

cat > "${DEB_ROOT}${CONFIG_DIR}/environment" <<'EOF'
# ============================================================
# KYGnus Web File Manager Environment
# ============================================================

# This value is automatically configured by postinst.
#
# Example:
#
# FILE_MANAGER_USER=koosha

FILE_MANAGER_USER=

FILE_MANAGER_HOST=0.0.0.0

FILE_MANAGER_PORT=5010

# Empty because the unchanged main.py uses:
#
#   /home/<user>
#
FILE_MANAGER_ROOT=

FILE_MANAGER_DEBUG=0

FILE_MANAGER_UPLOAD_DIR=/var/lib/ourfiles/uploads

FILE_MANAGER_REPORT_DIR=/var/lib/ourfiles/reports

FILE_MANAGER_LOG_DIR=/var/lib/ourfiles/logs
EOF

chmod 755 "${DEB_ROOT}${CONFIG_DIR}"

chmod 644 "${DEB_ROOT}${CONFIG_DIR}/settings.py"

chmod 644 "${DEB_ROOT}${CONFIG_DIR}/environment"

echo "Configuration created."
echo

# ============================================================================
# CLI Launcher
# ============================================================================

echo "Creating /usr/bin/ourfiles..."

cat > "${DEB_ROOT}${BIN_FILE}" <<'EOF'
#!/usr/bin/env bash

###############################################################################
# KYGnus Web File Manager
#
# This launcher is responsible for starting main.py as the configured
# desktop user.
#
# main.py remains unchanged and continues to use:
#
#     getpass.getuser()
#
# Therefore Flask sees the correct user and ROOT_DIR becomes:
#
#     /home/<user>
###############################################################################

set -u

APP_NAME="ourfiles"

APP_DIR="/usr/share/ourfiles"

MAIN_APP="${APP_DIR}/main.py"

PYTHON_BIN="${APP_DIR}/venv/bin/python"

CONFIG_DIR="/etc/ourfiles"

ENV_FILE="${CONFIG_DIR}/environment"

DATA_DIR="/var/lib/ourfiles"

LOG_DIR="${DATA_DIR}/logs"

LOG_FILE="${LOG_DIR}/ourfiles.log"

PID_FILE="${DATA_DIR}/ourfiles.pid"

APP_PORT="5010"

APP_URL="http://127.0.0.1:${APP_PORT}"


# ============================================================================
# Load Environment
# ============================================================================

if [ -f "$ENV_FILE" ]; then

    set -a

    . "$ENV_FILE"

    set +a

fi


# ============================================================================
# Detect Application User
# ============================================================================

RUN_USER="${FILE_MANAGER_USER:-}"


if [ -z "$RUN_USER" ]; then

    if [ -n "${SUDO_USER:-}" ] &&
       [ "${SUDO_USER}" != "root" ] &&
       id "${SUDO_USER}" >/dev/null 2>&1; then

        RUN_USER="${SUDO_USER}"

    elif [ -n "${USER:-}" ] &&
         [ "${USER}" != "root" ] &&
         id "${USER}" >/dev/null 2>&1; then

        RUN_USER="${USER}"

    else

        RUN_USER="$(logname 2>/dev/null || true)"

    fi

fi


# ============================================================================
# Validate User
# ============================================================================

if [ -z "$RUN_USER" ] ||
   ! id "$RUN_USER" >/dev/null 2>&1; then

    echo
    echo "ERROR: Could not determine application user."
    echo
    echo "Configuration:"
    echo
    echo "  $ENV_FILE"
    echo
    echo "Set:"
    echo
    echo "  FILE_MANAGER_USER=<username>"
    echo

    exit 1

fi


RUN_GROUP="$(id -gn "$RUN_USER" 2>/dev/null || true)"

RUN_HOME="$(getent passwd "$RUN_USER" | cut -d: -f6 2>/dev/null || true)"


if [ -z "$RUN_HOME" ]; then

    RUN_HOME="/home/${RUN_USER}"

fi


# ============================================================================
# Validate Application
# ============================================================================

if [ ! -f "$MAIN_APP" ]; then

    echo
    echo "ERROR: main.py not found:"
    echo
    echo "  $MAIN_APP"
    echo

    exit 1

fi


if [ ! -x "$PYTHON_BIN" ]; then

    echo
    echo "ERROR: Python virtual environment not found:"
    echo
    echo "  $PYTHON_BIN"
    echo

    exit 1

fi


# ============================================================================
# Browser
# ============================================================================

open_browser()
{
    URL="$1"

    if [ -z "${DISPLAY:-}" ] &&
       [ -z "${WAYLAND_DISPLAY:-}" ]; then

        echo
        echo "No graphical desktop session detected."
        echo
        echo "Open manually:"
        echo
        echo "  $URL"
        echo

        return 0

    fi


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

        xdg-open "$URL" >/dev/null 2>&1 &

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

        sensible-browser "$URL" >/dev/null 2>&1 &

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

        firefox "$URL" >/dev/null 2>&1 &

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

        chromium "$URL" >/dev/null 2>&1 &

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

        chromium-browser "$URL" >/dev/null 2>&1 &

    else

        echo
        echo "Browser not found."
        echo
        echo "Open manually:"
        echo
        echo "  $URL"
        echo

    fi
}


# ============================================================================
# Run As Application User
# ============================================================================

run_as_user()
{
    if [ "$(id -un)" = "$RUN_USER" ]; then

        "$@"

        return $?

    fi


    if [ "$(id -u)" -eq 0 ] &&
       command -v runuser >/dev/null 2>&1; then

        runuser \
            -u "$RUN_USER" \
            -- \
            "$@"

        return $?

    fi


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

        sudo \
            -u "$RUN_USER" \
            "$@"

        return $?

    fi


    echo
    echo "ERROR: Cannot execute application as:"
    echo
    echo "  $RUN_USER"
    echo
    echo "Neither runuser nor sudo is available."
    echo

    return 1
}


# ============================================================================
# Is Running
# ============================================================================

is_running()
{
    if ! command -v curl >/dev/null 2>&1; then

        return 1

    fi

    curl \
        -fsS \
        --max-time 2 \
        "$APP_URL" \
        >/dev/null 2>&1
}


# ============================================================================
# Start Application
# ============================================================================

start_application()
{
    if is_running; then

        echo
        echo "KYGnus Web File Manager is already running."
        echo
        echo "User:"
        echo "  $RUN_USER"
        echo
        echo "Home:"
        echo "  $RUN_HOME"
        echo
        echo "URL:"
        echo "  $APP_URL"
        echo

        return 0

    fi


    mkdir -p "$LOG_DIR" 2>/dev/null || true


    # Make runtime directories owned by application user.
    if [ "$(id -u)" -eq 0 ]; then

        chown \
            "$RUN_USER:$RUN_GROUP" \
            "$DATA_DIR" \
            "$LOG_DIR" \
            >/dev/null 2>&1 || true

    fi


    echo
    echo "============================================================"
    echo " Starting KYGnus Web File Manager"
    echo "============================================================"
    echo
    echo "Application user:"
    echo "  $RUN_USER"
    echo
    echo "Home directory:"
    echo "  $RUN_HOME"
    echo
    echo "Application:"
    echo "  $MAIN_APP"
    echo
    echo "URL:"
    echo "  $APP_URL"
    echo


    if [ "$(id -u)" -eq 0 ] &&
       command -v runuser >/dev/null 2>&1; then

        runuser \
            -u "$RUN_USER" \
            -- \
            env \
            HOME="$RUN_HOME" \
            USER="$RUN_USER" \
            LOGNAME="$RUN_USER" \
            FILE_MANAGER_USER="$RUN_USER" \
            FILE_MANAGER_PORT="$APP_PORT" \
            nohup \
            "$PYTHON_BIN" \
            "$MAIN_APP" \
            >> "$LOG_FILE" 2>&1 &

        APP_PID=$!


    elif [ "$(id -un)" = "$RUN_USER" ]; then

        env \
            HOME="$RUN_HOME" \
            USER="$RUN_USER" \
            LOGNAME="$RUN_USER" \
            FILE_MANAGER_USER="$RUN_USER" \
            FILE_MANAGER_PORT="$APP_PORT" \
            nohup \
            "$PYTHON_BIN" \
            "$MAIN_APP" \
            >> "$LOG_FILE" 2>&1 &

        APP_PID=$!


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

        sudo \
            -u "$RUN_USER" \
            env \
            HOME="$RUN_HOME" \
            USER="$RUN_USER" \
            LOGNAME="$RUN_USER" \
            FILE_MANAGER_USER="$RUN_USER" \
            FILE_MANAGER_PORT="$APP_PORT" \
            nohup \
            "$PYTHON_BIN" \
            "$MAIN_APP" \
            >> "$LOG_FILE" 2>&1 &

        APP_PID=$!


    else

        echo
        echo "ERROR: Cannot start application as $RUN_USER."
        echo

        return 1

    fi


    echo "$APP_PID" > "$PID_FILE" 2>/dev/null || true


    if [ "$(id -u)" -eq 0 ]; then

        chown \
            "$RUN_USER:$RUN_GROUP" \
            "$PID_FILE" \
            >/dev/null 2>&1 || true

    fi


    echo "PID:"
    echo "  $APP_PID"
    echo

    echo "Waiting for Flask server..."


    for i in $(seq 1 30); do

        sleep 1


        if is_running; then

            echo
            echo "============================================================"
            echo " Web File Manager is ready"
            echo "============================================================"
            echo
            echo "User:"
            echo "  $RUN_USER"
            echo
            echo "Home:"
            echo "  $RUN_HOME"
            echo
            echo "URL:"
            echo "  $APP_URL"
            echo

            return 0

        fi


        if [ -f "$PID_FILE" ] &&
           ! kill -0 "$APP_PID" >/dev/null 2>&1; then

            echo
            echo "ERROR: Application stopped unexpectedly."
            echo
            echo "Last log output:"
            echo

            tail -n 50 "$LOG_FILE" \
                2>/dev/null || true

            return 1

        fi

    done


    echo
    echo "WARNING: Flask did not respond within 30 seconds."
    echo
    echo "Check:"
    echo
    echo "  $LOG_FILE"
    echo

    return 1
}


# ============================================================================
# Stop
# ============================================================================

stop_application()
{
    if [ -f "$PID_FILE" ]; then

        PID="$(cat "$PID_FILE" 2>/dev/null || true)"


        if [ -n "$PID" ] &&
           kill -0 "$PID" >/dev/null 2>&1; then

            echo
            echo "Stopping ourfiles..."
            echo "PID: $PID"
            echo


            if [ "$(id -u)" -eq 0 ]; then

                kill "$PID" >/dev/null 2>&1 || true

            else

                kill "$PID" >/dev/null 2>&1 || true

            fi


            sleep 2

        fi


        rm -f "$PID_FILE"

    fi


    echo "ourfiles stopped."
}


# ============================================================================
# Status
# ============================================================================

status_application()
{
    echo
    echo "============================================================"
    echo " KYGnus Web File Manager"
    echo "============================================================"
    echo
    echo "User:"
    echo "  $RUN_USER"
    echo
    echo "Home:"
    echo "  $RUN_HOME"
    echo
    echo "URL:"
    echo "  $APP_URL"
    echo


    if is_running; then

        echo "Status:"
        echo "  RUNNING"

    else

        echo "Status:"
        echo "  STOPPED"

    fi


    echo
}


# ============================================================================
# Logs
# ============================================================================

show_logs()
{
    if [ -f "$LOG_FILE" ]; then

        tail -n 100 "$LOG_FILE"

    else

        echo
        echo "No log file found:"
        echo
        echo "  $LOG_FILE"
        echo

    fi
}


# ============================================================================
# Foreground
# ============================================================================

run_foreground()
{
    cd "$APP_DIR" || exit 1


    run_as_user \
        env \
        HOME="$RUN_HOME" \
        USER="$RUN_USER" \
        LOGNAME="$RUN_USER" \
        FILE_MANAGER_USER="$RUN_USER" \
        FILE_MANAGER_PORT="$APP_PORT" \
        "$PYTHON_BIN" \
        "$MAIN_APP"
}


# ============================================================================
# Commands
# ============================================================================

case "${1:-start}" in

    start)

        start_application

        open_browser "$APP_URL"

        ;;


    stop)

        stop_application

        ;;


    restart)

        stop_application

        sleep 1

        start_application

        open_browser "$APP_URL"

        ;;


    status)

        status_application

        ;;


    logs)

        show_logs

        ;;


    open)

        open_browser "$APP_URL"

        ;;


    run)

        run_foreground

        ;;


    version)

        echo "KYGnus Web File Manager ${APP_VERSION:-1.0.2}"

        ;;


    *)

        echo
        echo "KYGnus Web File Manager"
        echo
        echo "Usage:"
        echo
        echo "  ourfiles              Start and open browser"
        echo "  ourfiles start        Start application"
        echo "  ourfiles stop         Stop application"
        echo "  ourfiles restart      Restart application"
        echo "  ourfiles status       Show status"
        echo "  ourfiles logs         Show logs"
        echo "  ourfiles open         Open browser"
        echo "  ourfiles run          Run in foreground"
        echo "  ourfiles version      Show version"
        echo

        exit 1

        ;;

esac

exit 0
EOF

chmod 755 "${DEB_ROOT}${BIN_FILE}"

echo "Launcher created."
echo

# ============================================================================
# Desktop Entry
# ============================================================================

echo "Creating desktop launcher..."

cat > "${DEB_ROOT}${DESKTOP_FILE}" <<'EOF'
[Desktop Entry]
Version=1.0
Type=Application
Name=KYGnus Web File Manager
GenericName=Web File Manager
Comment=KYGnus Web-based Linux File Manager
Exec=/usr/bin/ourfiles
TryExec=/usr/bin/ourfiles
Icon=system-file-manager
Terminal=false
StartupNotify=true
Categories=Utility;System;FileManager;
Keywords=file;manager;files;storage;linux;KYGnus;
EOF

chmod 644 "${DEB_ROOT}${DESKTOP_FILE}"

echo "Desktop launcher created."
echo

# ============================================================================
# Documentation
# ============================================================================

echo "Creating documentation..."

cat > "${DEB_ROOT}${DOC_DIR}/README.Debian" <<EOF
KYGnus Web File Manager
=======================

Package:
    ${APP_NAME}

Version:
    ${VERSION}

Command:
    ourfiles

Web interface:
    ${APP_URL}

Application:
    ${APP_INSTALL_DIR}/

Main application:
    ${APP_INSTALL_DIR}/main.py

Configuration:
    ${CONFIG_DIR}/settings.py

Environment:
    ${CONFIG_DIR}/environment

Runtime data:
    ${DATA_DIR}/

Uploads:
    ${UPLOAD_DIR}/

Reports:
    ${REPORT_DIR}/

Logs:
    ${LOG_DIR}/

Main log:
    ${LOG_DIR}/ourfiles.log

Launcher:
    ${BIN_FILE}

Desktop entry:
    ${DESKTOP_FILE}


USER HANDLING
=============

The package detects the user who installs the package.

Example:

    sudo dpkg -i ourfiles_${VERSION}_amd64.deb

If the sudo user is:

    koosha

the application is configured to run as:

    koosha

The unchanged main.py uses:

    getpass.getuser()

and therefore:

    ROOT_DIR = /home/koosha


Start:

    ourfiles

Stop:

    ourfiles stop

Restart:

    ourfiles restart

Status:

    ourfiles status

Logs:

    ourfiles logs


systemd:

    systemctl status ourfiles
    sudo systemctl start ourfiles
    sudo systemctl stop ourfiles
    sudo systemctl restart ourfiles


Configuration:

    sudo nano ${CONFIG_DIR}/environment


To select a different user:

    FILE_MANAGER_USER=username


To select a different root directory:

    FILE_MANAGER_ROOT=/mnt/storage


IMPORTANT:

The current main.py uses getpass.getuser().

The Debian package therefore starts the application as the
configured application user instead of root.


Runtime data is intentionally preserved after package removal.

To manually remove runtime data:

    sudo rm -rf ${DATA_DIR}
EOF

if [ -f "README.md" ]; then

    cp \
        README.md \
        "${DEB_ROOT}${DOC_DIR}/README.md"

fi

if [ -f "LICENSE" ]; then

    cp \
        LICENSE \
        "${DEB_ROOT}${DOC_DIR}/LICENSE"

fi

echo "Documentation created."
echo

# ============================================================================
# DEBIAN/postinst
# ============================================================================

echo "Creating DEBIAN/postinst..."

cat > "${DEB_ROOT}/DEBIAN/postinst" <<'EOF'
#!/usr/bin/env bash

###############################################################################
# KYGnus Web File Manager
# postinst
###############################################################################

set -e

APP_NAME="ourfiles"

APP_DIR="/usr/share/ourfiles"

CONFIG_DIR="/etc/ourfiles"

ENV_FILE="${CONFIG_DIR}/environment"

DATA_DIR="/var/lib/ourfiles"

UPLOAD_DIR="${DATA_DIR}/uploads"

REPORT_DIR="${DATA_DIR}/reports"

LOG_DIR="${DATA_DIR}/logs"

BIN_FILE="/usr/bin/ourfiles"

SYSTEMD_FILE="/etc/systemd/system/ourfiles.service"

APP_PORT="5010"


echo
echo "============================================================"
echo " Configuring KYGnus Web File Manager"
echo "============================================================"
echo


# ============================================================================
# Directories
# ============================================================================

mkdir -p "$CONFIG_DIR"

mkdir -p "$DATA_DIR"

mkdir -p "$UPLOAD_DIR"

mkdir -p "$REPORT_DIR"

mkdir -p "$LOG_DIR"


# ============================================================================
# Detect Real Desktop User
# ============================================================================

INSTALL_USER=""

# ---------------------------------------------------------------------------
# sudo
# ---------------------------------------------------------------------------

if [ -n "${SUDO_USER:-}" ] &&
   [ "${SUDO_USER}" != "root" ] &&
   id "${SUDO_USER}" >/dev/null 2>&1; then

    INSTALL_USER="${SUDO_USER}"

fi


# ---------------------------------------------------------------------------
# pkexec
# ---------------------------------------------------------------------------

if [ -z "$INSTALL_USER" ] &&
   [ -n "${PKEXEC_UID:-}" ]; then

    INSTALL_USER="$(
        id -nu "${PKEXEC_UID}" 2>/dev/null || true
    )"

fi


# ---------------------------------------------------------------------------
# USER
# ---------------------------------------------------------------------------

if [ -z "$INSTALL_USER" ] &&
   [ -n "${USER:-}" ] &&
   [ "${USER}" != "root" ] &&
   id "${USER}" >/dev/null 2>&1; then

    INSTALL_USER="${USER}"

fi


# ---------------------------------------------------------------------------
# logname
# ---------------------------------------------------------------------------

if [ -z "$INSTALL_USER" ]; then

    INSTALL_USER="$(
        logname 2>/dev/null || true
    )"

fi


if [ "$INSTALL_USER" = "root" ]; then

    INSTALL_USER=""

fi


# ============================================================================
# User Information
# ============================================================================

if [ -n "$INSTALL_USER" ]; then

    INSTALL_GROUP="$(
        id -gn "$INSTALL_USER"
    )"

    INSTALL_HOME="$(
        getent passwd "$INSTALL_USER" |
        cut -d: -f6
    )"


    if [ -z "$INSTALL_HOME" ]; then

        INSTALL_HOME="/home/${INSTALL_USER}"

    fi


    echo "Detected application user:"
    echo
    echo "  User:  ${INSTALL_USER}"
    echo "  Group: ${INSTALL_GROUP}"
    echo "  Home:  ${INSTALL_HOME}"
    echo

else

    echo "WARNING: Could not detect a normal desktop user."
    echo
    echo "You can manually configure:"
    echo
    echo "  ${ENV_FILE}"
    echo
    echo "with:"
    echo
    echo "  FILE_MANAGER_USER=username"
    echo

fi


# ============================================================================
# Configure Environment
# ============================================================================

if [ -n "$INSTALL_USER" ]; then

    cat > "$ENV_FILE" <<ENVEOF
# ============================================================
# KYGnus Web File Manager Environment
# ============================================================

FILE_MANAGER_USER=${INSTALL_USER}

FILE_MANAGER_HOST=0.0.0.0

FILE_MANAGER_PORT=${APP_PORT}

# Empty:
#
# The unchanged main.py uses:
#
#     /home/<user>
#
FILE_MANAGER_ROOT=

FILE_MANAGER_DEBUG=0

FILE_MANAGER_UPLOAD_DIR=/var/lib/ourfiles/uploads

FILE_MANAGER_REPORT_DIR=/var/lib/ourfiles/reports

FILE_MANAGER_LOG_DIR=/var/lib/ourfiles/logs
ENVEOF

else

    if [ ! -f "$ENV_FILE" ]; then

        cat > "$ENV_FILE" <<'ENVEOF'
# ============================================================
# KYGnus Web File Manager Environment
# ============================================================

FILE_MANAGER_USER=

FILE_MANAGER_HOST=0.0.0.0

FILE_MANAGER_PORT=5010

FILE_MANAGER_ROOT=

FILE_MANAGER_DEBUG=0

FILE_MANAGER_UPLOAD_DIR=/var/lib/ourfiles/uploads

FILE_MANAGER_REPORT_DIR=/var/lib/ourfiles/reports

FILE_MANAGER_LOG_DIR=/var/lib/ourfiles/logs
ENVEOF

    fi

fi


chmod 644 "$ENV_FILE"


# ============================================================================
# Python Virtual Environment
# ============================================================================

if [ ! -d "${APP_DIR}/venv" ]; then

    echo
    echo "Creating Python virtual environment..."

    python3 -m venv "${APP_DIR}/venv"

fi


# ============================================================================
# Python Dependencies
# ============================================================================

if [ -f "${APP_DIR}/requirements.txt" ]; then

    echo
    echo "Installing Python dependencies..."

    "${APP_DIR}/venv/bin/python" \
        -m pip install \
        --disable-pip-version-check \
        --no-input \
        -r "${APP_DIR}/requirements.txt" || {

        echo
        echo "WARNING: Some Python dependencies could not be installed."
        echo
        echo "Try:"
        echo
        echo "  ${APP_DIR}/venv/bin/pip install -r ${APP_DIR}/requirements.txt"
        echo

    }

fi


# ============================================================================
# Runtime Ownership
# ============================================================================

if [ -n "$INSTALL_USER" ]; then

    chown \
        "${INSTALL_USER}:${INSTALL_GROUP}" \
        "$DATA_DIR" \
        "$UPLOAD_DIR" \
        "$REPORT_DIR" \
        "$LOG_DIR" \
        >/dev/null 2>&1 || true

fi


# ============================================================================
# Application Files
# ============================================================================

chown \
    -R \
    root:root \
    "$APP_DIR" \
    >/dev/null 2>&1 || true


chmod 755 "$APP_DIR"

chmod 755 "$BIN_FILE"


# ============================================================================
# systemd
# ============================================================================

if [ -d "/run/systemd/system" ] &&
   command -v systemctl >/dev/null 2>&1; then

    echo
    echo "systemd detected."

    if [ -n "$INSTALL_USER" ]; then

        cat > "$SYSTEMD_FILE" <<SERVICEEOF
[Unit]
Description=KYGnus Web File Manager
After=network.target

[Service]
Type=simple

User=${INSTALL_USER}
Group=${INSTALL_GROUP}

WorkingDirectory=/usr/share/ourfiles

Environment=HOME=${INSTALL_HOME}
Environment=USER=${INSTALL_USER}
Environment=LOGNAME=${INSTALL_USER}
Environment=FILE_MANAGER_USER=${INSTALL_USER}
Environment=FILE_MANAGER_PORT=${APP_PORT}
Environment=PYTHONUNBUFFERED=1

EnvironmentFile=-/etc/ourfiles/environment

ExecStart=/usr/share/ourfiles/venv/bin/python /usr/share/ourfiles/main.py

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
SERVICEEOF

        chmod 644 "$SYSTEMD_FILE"

        systemctl daemon-reload

        echo
        echo "systemd service created:"
        echo
        echo "  ${APP_NAME}.service"
        echo
        echo "Service user:"
        echo
        echo "  ${INSTALL_USER}"
        echo
        echo "Home:"
        echo
        echo "  ${INSTALL_HOME}"
        echo

    else

        echo
        echo "No application user detected."
        echo
        echo "systemd service was not created."
        echo

    fi


# ============================================================================
# runit / antiX
# ============================================================================

elif command -v sv >/dev/null 2>&1 ||
     [ -d "/etc/service" ]; then

    echo
    echo "runit detected."

    SERVICE_DIR="/etc/service/ourfiles"

    mkdir -p "$SERVICE_DIR"


    if [ -n "$INSTALL_USER" ]; then

        cat > "${SERVICE_DIR}/run" <<SERVICEEOF
#!/bin/sh

APP_DIR="/usr/share/ourfiles"

cd "\$APP_DIR" || exit 1

if [ -f /etc/ourfiles/environment ]; then
    . /etc/ourfiles/environment
fi

export HOME="${INSTALL_HOME}"
export USER="${INSTALL_USER}"
export LOGNAME="${INSTALL_USER}"

export FILE_MANAGER_USER="${INSTALL_USER}"
export FILE_MANAGER_PORT="${APP_PORT}"
export PYTHONUNBUFFERED=1

exec chpst -u "${INSTALL_USER}:${INSTALL_GROUP}" \
    /usr/share/ourfiles/venv/bin/python \
    /usr/share/ourfiles/main.py
SERVICEEOF

    else

        cat > "${SERVICE_DIR}/run" <<'SERVICEEOF'
#!/bin/sh

APP_DIR="/usr/share/ourfiles"

cd "$APP_DIR" || exit 1

if [ -f /etc/ourfiles/environment ]; then
    . /etc/ourfiles/environment
fi

export PYTHONUNBUFFERED=1

exec /usr/share/ourfiles/venv/bin/python \
    /usr/share/ourfiles/main.py
SERVICEEOF

    fi


    chmod 755 "${SERVICE_DIR}/run"


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

        mkdir -p "${SERVICE_DIR}/log"

        cat > "${SERVICE_DIR}/log/run" <<'LOGEOF'
#!/bin/sh

mkdir -p /var/log/ourfiles

exec svlogd /var/log/ourfiles
LOGEOF

        chmod 755 "${SERVICE_DIR}/log/run"

    fi


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

        sv start ourfiles \
            >/dev/null 2>&1 || true

    fi


    echo
    echo "runit service created:"
    echo
    echo "  /etc/service/ourfiles/"
    echo

else

    echo
    echo "No systemd or runit detected."
    echo
    echo "Use:"
    echo
    echo "  ourfiles"
    echo

fi


# ============================================================================
# Desktop Database
# ============================================================================

if command -v update-desktop-database >/dev/null 2>&1; then

    update-desktop-database \
        /usr/share/applications \
        >/dev/null 2>&1 || true

fi


# ============================================================================
# Final Validation
# ============================================================================

if [ ! -f "$BIN_FILE" ]; then

    echo
    echo "ERROR: Launcher missing:"
    echo
    echo "  $BIN_FILE"
    echo

    exit 1

fi


if [ ! -x "$BIN_FILE" ]; then

    echo
    echo "ERROR: Launcher is not executable."
    echo

    exit 1

fi


# ============================================================================
# Final Message
# ============================================================================

echo
echo "============================================================"
echo " Installation configuration completed"
echo "============================================================"
echo

if [ -n "$INSTALL_USER" ]; then

    echo "Application user:"
    echo "  ${INSTALL_USER}"

    echo
    echo "Application home:"
    echo "  ${INSTALL_HOME}"

else

    echo "Application user:"
    echo "  NOT DETECTED"

fi

echo
echo "Application:"
echo "  ${APP_DIR}"

echo
echo "Command:"
echo "  ourfiles"

echo
echo "Web:"
echo "  http://127.0.0.1:${APP_PORT}"

echo
echo "Configuration:"
echo "  ${ENV_FILE}"

echo
echo "Data:"
echo "  ${DATA_DIR}"

echo

exit 0
EOF

chmod 755 "${DEB_ROOT}/DEBIAN/postinst"

echo "postinst created."
echo

# ============================================================================
# DEBIAN/prerm
# ============================================================================

echo "Creating DEBIAN/prerm..."

cat > "${DEB_ROOT}/DEBIAN/prerm" <<'EOF'
#!/usr/bin/env bash

set +e

# ============================================================================
# systemd
# ============================================================================

if [ -d "/run/systemd/system" ] &&
   command -v systemctl >/dev/null 2>&1; then

    systemctl stop ourfiles.service \
        >/dev/null 2>&1 || true

fi


# ============================================================================
# runit
# ============================================================================

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

    sv stop ourfiles \
        >/dev/null 2>&1 || true

fi


exit 0
EOF

chmod 755 "${DEB_ROOT}/DEBIAN/prerm"

echo "prerm created."
echo

# ============================================================================
# DEBIAN/postrm
# ============================================================================

echo "Creating DEBIAN/postrm..."

cat > "${DEB_ROOT}/DEBIAN/postrm" <<'EOF'
#!/usr/bin/env bash

set +e

SYSTEMD_FILE="/etc/systemd/system/ourfiles.service"

SERVICE_DIR="/etc/service/ourfiles"


# ============================================================================
# Remove systemd service
# ============================================================================

if [ -f "$SYSTEMD_FILE" ]; then

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

        systemctl stop ourfiles.service \
            >/dev/null 2>&1 || true

        systemctl disable ourfiles.service \
            >/dev/null 2>&1 || true

    fi

    rm -f "$SYSTEMD_FILE"

fi


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

    systemctl daemon-reload \
        >/dev/null 2>&1 || true

fi


# ============================================================================
# Remove runit service
# ============================================================================

case "${1:-}" in

    remove|purge)

        if [ -d "$SERVICE_DIR" ]; then

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

                sv stop ourfiles \
                    >/dev/null 2>&1 || true

            fi

            rm -rf "$SERVICE_DIR"

        fi

        ;;

esac


# ============================================================================
# Lifecycle
# ============================================================================

case "${1:-}" in

    remove)

        echo
        echo "ourfiles package removed."
        echo
        echo "Runtime data preserved:"
        echo
        echo "  /var/lib/ourfiles/"
        echo

        ;;


    purge)

        echo
        echo "Purging configuration..."
        echo

        rm -rf /etc/ourfiles

        echo
        echo "Runtime data was intentionally preserved."
        echo
        echo "To remove it manually:"
        echo
        echo "  sudo rm -rf /var/lib/ourfiles"
        echo

        ;;


    upgrade|abort-upgrade|failed-upgrade)

        echo "ourfiles package upgrade operation."

        ;;


    *)

        echo "No destructive runtime-data cleanup performed."

        ;;

esac


exit 0
EOF

chmod 755 "${DEB_ROOT}/DEBIAN/postrm"

echo "postrm created."
echo

# ============================================================================
# Package Permissions
# ============================================================================

echo "Setting package permissions..."

chmod 755 \
    "${DEB_ROOT}${APP_INSTALL_DIR}"

chmod 755 \
    "${DEB_ROOT}${BIN_FILE}"

chmod 755 \
    "${DEB_ROOT}${CONFIG_DIR}"

chmod 755 \
    "${DEB_ROOT}${DATA_DIR}"

chmod 755 \
    "${DEB_ROOT}${UPLOAD_DIR}"

chmod 755 \
    "${DEB_ROOT}${REPORT_DIR}"

chmod 755 \
    "${DEB_ROOT}${LOG_DIR}"

find \
    "${DEB_ROOT}${APP_INSTALL_DIR}" \
    -type d \
    -exec chmod 755 {} \;

find \
    "${DEB_ROOT}${APP_INSTALL_DIR}" \
    -type f \
    -exec chmod 644 {} \;

chmod 755 \
    "${DEB_ROOT}${BIN_FILE}"

chmod 755 \
    "${DEB_ROOT}/DEBIAN/preinst"

chmod 755 \
    "${DEB_ROOT}/DEBIAN/postinst"

chmod 755 \
    "${DEB_ROOT}/DEBIAN/prerm"

chmod 755 \
    "${DEB_ROOT}/DEBIAN/postrm"

echo "Permissions configured."
echo

# ============================================================================
# Verify Maintainer Scripts BEFORE Building
#
# This specifically protects against the previous:
#
#     echo#!/bin/bash
#
# / malformed heredoc problem.
# ============================================================================

echo "Validating maintainer scripts..."

SCRIPT_FILES=(
    "${DEB_ROOT}/DEBIAN/preinst"
    "${DEB_ROOT}/DEBIAN/postinst"
    "${DEB_ROOT}/DEBIAN/prerm"
    "${DEB_ROOT}/DEBIAN/postrm"
    "${DEB_ROOT}${BIN_FILE}"
)

for SCRIPT in "${SCRIPT_FILES[@]}"; do

    echo "Checking:"
    echo "  ${SCRIPT}"

    if ! bash -n "${SCRIPT}"; then

        echo
        echo "ERROR: Bash syntax error in:"
        echo
        echo "  ${SCRIPT}"
        echo

        exit 1

    fi

done

echo
echo "All shell scripts passed bash syntax validation."
echo

# ============================================================================
# Validate Required Package Files
# ============================================================================

echo "Verifying package tree..."

REQUIRED_FILES=(

    "${DEB_ROOT}/DEBIAN/control"

    "${DEB_ROOT}/DEBIAN/preinst"

    "${DEB_ROOT}/DEBIAN/postinst"

    "${DEB_ROOT}/DEBIAN/prerm"

    "${DEB_ROOT}/DEBIAN/postrm"

    "${DEB_ROOT}${APP_INSTALL_DIR}/main.py"

    "${DEB_ROOT}${APP_INSTALL_DIR}/requirements.txt"

    "${DEB_ROOT}${CONFIG_DIR}/settings.py"

    "${DEB_ROOT}${CONFIG_DIR}/environment"

    "${DEB_ROOT}${BIN_FILE}"

    "${DEB_ROOT}${DESKTOP_FILE}"

)

for FILE in "${REQUIRED_FILES[@]}"; do

    if [ ! -f "$FILE" ]; then

        echo
        echo "ERROR: Required file missing:"
        echo
        echo "  $FILE"
        echo

        exit 1

    fi

done

echo "All required package files found."
echo

# ============================================================================
# Check Desktop Entry
# ============================================================================

echo "Checking desktop entry..."

if grep -q \
    '^Exec=/usr/bin/ourfiles$' \
    "${DEB_ROOT}${DESKTOP_FILE}"; then

    echo "Desktop Exec entry OK."

else

    echo
    echo "ERROR: Invalid desktop Exec entry."
    echo

    exit 1

fi

echo

# ============================================================================
# Build Debian Package
# ============================================================================

echo "Building Debian package..."

dpkg-deb \
    --build \
    --root-owner-group \
    "${DEB_ROOT}" \
    "${PACKAGE_FILE}"

echo

if [ ! -f "${PACKAGE_FILE}" ]; then

    echo
    echo "ERROR: Package was not created."
    echo

    exit 1

fi

echo "Debian package created:"
echo
echo "  ${PACKAGE_FILE}"
echo

# ============================================================================
# Package Metadata Validation
# ============================================================================

echo "Validating package metadata..."

dpkg-deb \
    --info \
    "${PACKAGE_FILE}" \
    >/dev/null

echo "Package metadata OK."
echo

# ============================================================================
# Package Content Validation
# ============================================================================

echo "Validating package contents..."

PACKAGE_CONTENTS="$(dpkg-deb -c "${PACKAGE_FILE}")"


# ---------------------------------------------------------------------------
# Launcher
# ---------------------------------------------------------------------------

if echo "$PACKAGE_CONTENTS" |
   grep -qE '[[:space:]]\./usr/bin/ourfiles$'; then

    echo "OK: /usr/bin/ourfiles"

else

    echo "ERROR: /usr/bin/ourfiles missing."

    exit 1

fi


# ---------------------------------------------------------------------------
# main.py
# ---------------------------------------------------------------------------

if echo "$PACKAGE_CONTENTS" |
   grep -qE '[[:space:]]\./usr/share/ourfiles/main.py$'; then

    echo "OK: /usr/share/ourfiles/main.py"

else

    echo "ERROR: main.py missing."

    exit 1

fi


# ---------------------------------------------------------------------------
# templates
# ---------------------------------------------------------------------------

if echo "$PACKAGE_CONTENTS" |
   grep -qE '[[:space:]]\./usr/share/ourfiles/templates/'; then

    echo "OK: templates/"

else

    echo "ERROR: templates/ missing."

    exit 1

fi


# ---------------------------------------------------------------------------
# static
# ---------------------------------------------------------------------------

if echo "$PACKAGE_CONTENTS" |
   grep -qE '[[:space:]]\./usr/share/ourfiles/static/'; then

    echo "OK: static/"

else

    echo "ERROR: static/ missing."

    exit 1

fi


# ---------------------------------------------------------------------------
# environment
# ---------------------------------------------------------------------------

if echo "$PACKAGE_CONTENTS" |
   grep -qE '[[:space:]]\./etc/ourfiles/environment$'; then

    echo "OK: /etc/ourfiles/environment"

else

    echo "ERROR: environment missing."

    exit 1

fi


# ---------------------------------------------------------------------------
# Desktop Entry
# ---------------------------------------------------------------------------

if echo "$PACKAGE_CONTENTS" |
   grep -qE \
   '[[:space:]]\./usr/share/applications/kygnus-ourfiles.desktop$'; then

    echo "OK: unique desktop entry"

else

    echo "ERROR: desktop entry missing."

    exit 1

fi


# ---------------------------------------------------------------------------
# Make sure conflicting desktop file is NOT included
# ---------------------------------------------------------------------------

if echo "$PACKAGE_CONTENTS" |
   grep -qE \
   '[[:space:]]\./usr/share/applications/file-manager.desktop$'; then

    echo
    echo "ERROR: Conflicting file-manager.desktop detected."
    echo
    echo "This would conflict with antiX desktop-defaults-antix."
    echo

    exit 1

fi

echo

# ============================================================================
# Extract Control Scripts And Validate Again
# ============================================================================

echo "Extracting control scripts for final validation..."

CONTROL_CHECK="/tmp/${APP_NAME}-control-check-$$"

rm -rf "${CONTROL_CHECK}"

dpkg-deb \
    --control \
    "${PACKAGE_FILE}" \
    "${CONTROL_CHECK}"


for SCRIPT in \
    preinst \
    postinst \
    prerm \
    postrm
do

    if [ ! -f "${CONTROL_CHECK}/${SCRIPT}" ]; then

        echo
        echo "ERROR: ${SCRIPT} missing from package."
        echo

        rm -rf "${CONTROL_CHECK}"

        exit 1

    fi


    if ! bash -n "${CONTROL_CHECK}/${SCRIPT}"; then

        echo
        echo "ERROR: Invalid ${SCRIPT} inside .deb."
        echo

        rm -rf "${CONTROL_CHECK}"

        exit 1

    fi


    echo "OK: ${SCRIPT}"

done


rm -rf "${CONTROL_CHECK}"

echo

# ============================================================================
# Display Important Package Files
# ============================================================================

echo "Important package files:"
echo

dpkg-deb -c "${PACKAGE_FILE}" |
    grep -E \
    'usr/bin/ourfiles$|usr/share/ourfiles/main.py$|usr/share/applications/kygnus-ourfiles.desktop$|etc/ourfiles/|usr/share/doc/ourfiles/' \
    || true

echo

# ============================================================================
# Package Size
# ============================================================================

PACKAGE_SIZE="$(
    du -h "${PACKAGE_FILE}" |
    awk '{print $1}'
)"

# ============================================================================
# Final
# ============================================================================

echo
echo "============================================================"
echo "                 BUILD SUCCESSFUL"
echo "============================================================"
echo
echo "Package:"
echo
echo "  ${PACKAGE_FILE}"
echo
echo "Version:"
echo
echo "  ${VERSION}"
echo
echo "Architecture:"
echo
echo "  ${ARCHITECTURE}"
echo
echo "Size:"
echo
echo "  ${PACKAGE_SIZE}"
echo
echo "Port:"
echo
echo "  ${APP_PORT}"
echo
echo "Install:"
echo
echo "  sudo apt install --reinstall ./${APP_NAME}_${VERSION}_${ARCHITECTURE}.deb"
echo
echo "Run:"
echo
echo "  ourfiles"
echo
echo "Status:"
echo
echo "  ourfiles status"
echo
echo "Logs:"
echo
echo "  ourfiles logs"
echo
echo "Web:"
echo
echo "  ${APP_URL}"
echo
echo "Application:"
echo
echo "  ${APP_INSTALL_DIR}/"
echo
echo "Configuration:"
echo
echo "  ${CONFIG_DIR}/environment"
echo
echo "Runtime data:"
echo
echo "  ${DATA_DIR}/"
echo
echo "Desktop entry:"
echo
echo "  ${DESKTOP_FILE}"
echo
echo "============================================================"
echo

