#!/usr/bin/env sh
# tikka_installer.sh
# Installer script for the Tikka Python package from PyPI using uv.

set -eu

# Hardcoded package name
PACKAGE="tikka"
CMD="tikka"

# Directories for desktop integration
DESKTOP_DIR="$HOME/.local/share/applications"
ICON_DIR_SVG="$HOME/.local/share/icons/hicolor/scalable/apps"
ICON_DIR_48="$HOME/.local/share/icons/hicolor/48x48/apps"
DESKTOP_FILE="$DESKTOP_DIR/$PACKAGE.desktop"
ICON_FILE_SVG="$ICON_DIR_SVG/$PACKAGE.svg"

# Disable colors if not in terminal or if NO_COLOR is set
if [ -t 1 ] && [ -z "${NO_COLOR:-}" ]; then
    GREEN='\033[0;32m'
    YELLOW='\033[1;33m'
    RED='\033[0;31m'
    NC='\033[0m'
else
    GREEN=''
    YELLOW=''
    RED=''
    NC=''
fi

# Helper functions (using printf for proper escape handling)
info() { printf "%b[INFO]%b %s\n" "$GREEN" "$NC" "$1"; }
warn() { printf "%b[WARN]%b %s\n" "$YELLOW" "$NC" "$1"; }
error() { printf "%b[ERROR]%b %s\n" "$RED" "$NC" "$1"; exit 1; }

# ----------------------------------------------------------------------
# Helper functions for user interaction
# ----------------------------------------------------------------------
ask_yes_no() {
    printf "%s [y/N]: " "$1"
    read -r answer
    case "$answer" in
        [yY]|[yY][eE][sS]) return 0 ;;
        *) return 1 ;;
    esac
}

uninstall_tikka() {
    info "Uninstalling Tikka package..."
    uv tool uninstall "$PACKAGE" || warn "Failed to uninstall $PACKAGE"

    # Remove .desktop and icons without asking
    rm -f "$DESKTOP_FILE"
    rm -f "$ICON_FILE_SVG"
    info "Removed desktop integration files (.desktop and icon)."

    # Update application database and icon cache
    if command -v update-desktop-database > /dev/null 2>&1; then
        update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true
    fi
    if command -v gtk-update-icon-cache > /dev/null 2>&1; then
        gtk-update-icon-cache -f -t "$HOME/.local/share/icons" 2>/dev/null || true
    fi

    # Ask whether to delete user data (~/.config/tikka)
    if ask_yes_no "Do you want to remove your personal data (directory ~/.config/tikka)?"; then
        if [ -d "$HOME/.config/tikka" ]; then
            rm -rf "$HOME/.config/tikka"
            info "Removed user data directory."
        else
            info "No user data directory found."
        fi
    fi

    # Ask whether to remove uv and the Python version it installed for Tikka
    if ask_yes_no "Do you want to remove uv and the Python version it installed for Tikka?"; then
        if [ -n "$PYTHON_VERSION" ]; then
            info "Removing Python $PYTHON_VERSION installed by uv..."
            uv python uninstall "$PYTHON_VERSION" 2>/dev/null || warn "Python $PYTHON_VERSION not found or could not be uninstalled"
        fi
        info "Removing uv..."
        if command -v uv > /dev/null 2>&1; then
            curl -LsSf https://astral.sh/uv/uninstall.sh | sh || warn "Failed to uninstall uv"
        fi
        info "uv and Python removed."
    else
        info "uv and Python kept."
    fi

    info "Tikka has been uninstalled."
    exit 0
}

# ----------------------------------------------------------------------
# 1. Install uv if missing
# ----------------------------------------------------------------------
if ! command -v uv > /dev/null 2>&1; then
    info "uv is not installed. Installing uv..."
    curl -LsSf https://astral.sh/uv/install.sh | sh
    case ":${PATH:-}:" in
        *:"$HOME/.local/bin":*)
            ;;
        *)
            warn "Adding ~/.local/bin to PATH for this session."
            PATH="$HOME/.local/bin:$PATH"
            ;;
    esac
    if ! command -v uv > /dev/null 2>&1; then
        error "uv installation failed. Please install it manually from https://docs.astral.sh/uv/"
    fi
    info "uv installed successfully."
else
    info "uv is already installed."
fi

# ----------------------------------------------------------------------
# 2. Determine required Python version from PyPI
# ----------------------------------------------------------------------
info "Fetching required Python version for $PACKAGE from PyPI..."

PYTHON_VERSION=$(curl -s "https://pypi.org/pypi/$PACKAGE/json" | grep -o '"requires_python":"[^"]*"' | head -1 | cut -d'"' -f4)

if [ -z "$PYTHON_VERSION" ]; then
    warn "Could not determine required Python version from PyPI. Using Python 3.9 as default."
    PYTHON_VERSION="3.9"
else
    info "Package requires Python: $PYTHON_VERSION"
    PYTHON_VERSION=$(echo "$PYTHON_VERSION" | sed -E 's/.*>=?([0-9]+\.[0-9]+).*/\1/')
    info "Using Python $PYTHON_VERSION for installation"
fi

# ----------------------------------------------------------------------
# 3. Check if Tikka is already installed, and offer actions
# ----------------------------------------------------------------------
if uv tool list 2>/dev/null | grep -q "^$PACKAGE "; then
    warn "'$PACKAGE' is already installed."
    echo "What would you like to do?"
    echo "  1) Update (upgrade to latest version)"
    echo "  2) Uninstall (remove Tikka completely)"
    echo "  3) Exit (do nothing)"
    printf "Enter your choice [1-3]: "
    read -r choice
    case "${choice:-1}" in
        1)
            info "Upgrading '$PACKAGE'..."
            uv tool upgrade "$PACKAGE" --python "$PYTHON_VERSION"
            info "Upgrade completed."
            # Continue to desktop integration (refresh .desktop and icons)
            ;;
        2)
            uninstall_tikka
            ;;
        3)
            info "Exiting without changes."
            exit 0
            ;;
        *)
            error "Invalid choice. Exiting."
            ;;
    esac
else
    info "Installing package '$PACKAGE' with Python $PYTHON_VERSION via 'uv tool install'..."
    uv tool install "$PACKAGE" --python "$PYTHON_VERSION"
    if [ $? -eq 0 ]; then
        info "Installation of '$PACKAGE' succeeded."
    else
        error "Installation of '$PACKAGE' failed."
    fi
fi

# Verify that the command is available
if ! command -v "$CMD" > /dev/null 2>&1; then
    warn "Command '$CMD' not found in PATH after installation."
    warn "You may need to restart your shell or add ~/.local/bin to PATH."
else
    info "Command '$CMD' is available."
fi

# ----------------------------------------------------------------------
# 4. Create .desktop entry and icons (SVG + PNG for compatibility)
# ----------------------------------------------------------------------
info "Creating desktop integration for $PACKAGE..."

mkdir -p "$DESKTOP_DIR"
mkdir -p "$ICON_DIR_SVG"
mkdir -p "$ICON_DIR_48"

EXEC_PATH=$(command -v "$CMD" 2>/dev/null || echo "$HOME/.local/bin/$CMD")

# Write .desktop file with absolute icon path
cat > "$DESKTOP_FILE" << EOF
[Desktop Entry]
Type=Application
Name=Tikka
Comment=Tikka Python application
Exec=$EXEC_PATH
Icon=$PACKAGE
Terminal=false
Categories=Office;Finance;
StartupNotify=true
X-GNOME-UsesNotifications=true
EOF
info "Created desktop file: $DESKTOP_FILE"

# Install SVG icon (original)
cat > "$ICON_FILE_SVG" << 'EOF'
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="128px" height="128px" viewBox="0 0 128 128" enable-background="new 0 0 128 128" xml:space="preserve">  <image id="image0" width="128" height="128" x="0" y="0"
    xlink:href="data:image/png;base64,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
RU5ErkJggg==" />
</svg>
EOF

# Update desktop database
if command -v update-desktop-database > /dev/null 2>&1; then
    update-desktop-database "$DESKTOP_DIR"
    info "Desktop database updated."
else
    warn "update-desktop-database not found. Desktop entry may not appear until next login."
fi

# Force refresh of icon cache (GNOME/PopOS!)
if command -v gtk-update-icon-cache > /dev/null 2>&1; then
    gtk-update-icon-cache -f -t "$HOME/.local/share/icons" 2>/dev/null || true
    info "Icon cache updated."
fi

# ----------------------------------------------------------------------
# 5. Remind about PATH and provide upgrade commands
# ----------------------------------------------------------------------
case ":${PATH:-}:" in
    *:"$HOME/.local/bin":*)
        ;;
    *)
        warn "Directory $HOME/.local/bin is not in your PATH."
        warn "Add the following line to your ~/.profile or ~/.bashrc:"
        echo 'export PATH="$HOME/.local/bin:$PATH"'
        echo "Then restart your shell or log out and back in."
        ;;
esac

echo
info "Installation complete! You can now launch Tikka from your desktop menu."
info "If the icon doesn't appear immediately, try logging out and back in."
info "To update '$PACKAGE' later, run:"
echo "    uv tool upgrade $PACKAGE"
echo
info "For a forced reinstallation:"
echo "    uv tool upgrade --reinstall $PACKAGE"

exit 0
