#!/bin/sh
set -e

# Source debconf library
. /usr/share/debconf/confmodule

# Define package name
PACKAGE="apt-ostreed"

# Function to log messages
log() {
    echo "$PACKAGE: $1" >&2
}

# Function to check if systemd is available
check_systemd() {
    if ! command -v systemctl >/dev/null 2>&1; then
        log "Warning: systemd not available, skipping service setup"
        return 1
    fi
    return 0
}

# Function to enable and start the service
setup_service() {
    if ! check_systemd; then
        return 0
    fi

    log "Setting up apt-ostreed service..."

    # Reload systemd daemon
    systemctl daemon-reload

    # Enable the service
    if systemctl enable apt-ostreed.service; then
        log "apt-ostreed service enabled"
    else
        log "Warning: Failed to enable apt-ostreed service"
    fi

    # Start the service if not running
    if ! systemctl is-active --quiet apt-ostreed.service; then
        if systemctl start apt-ostreed.service; then
            log "apt-ostreed service started"
        else
            log "Warning: Failed to start apt-ostreed service"
        fi
    else
        log "apt-ostreed service already running"
    fi
}

# Function to setup directories and permissions
setup_directories() {
    log "Setting up directories and permissions..."

    # Create necessary directories with proper permissions
    mkdir -p /var/log/apt-ostreed
    mkdir -p /var/cache/apt-ostree
    mkdir -p /var/lib/apt-ostree
    mkdir -p /var/lib/apt-ostree/repo

    # Set proper ownership (root:root)
    chown root:root /var/log/apt-ostreed
    chown root:root /var/cache/apt-ostree
    chown root:root /var/lib/apt-ostree
    chown root:root /var/lib/apt-ostree/repo

    # Set proper permissions
    chmod 755 /var/log/apt-ostreed
    chmod 755 /var/cache/apt-ostree
    chmod 755 /var/lib/apt-ostree
    chmod 755 /var/lib/apt-ostree/repo
}

# Function to reload polkit rules
reload_polkit() {
    if command -v pkaction >/dev/null 2>&1; then
        log "Reloading polkit rules..."
        # This will trigger polkit to reload its rules
        pkaction --version >/dev/null 2>&1 || true
    fi
}

# Main execution
case "$1" in
    configure)
        log "Configuring apt-ostreed package..."
        setup_directories
        setup_service
        reload_polkit
        log "Configuration completed successfully"
        ;;
    abort-upgrade|abort-remove|abort-deconfigure)
        # Do nothing on abort
        ;;
    *)
        log "Unknown action: $1"
        exit 1
        ;;
esac

exit 0
