#!/usr/bin/env bash

save-dotenv-to-keepass() {
    KEEPASS_ENTRY=$(echo "dotenv/${PWD##*/}#$(git symbolic-ref --short -q HEAD)" | tr '[:upper:]' '[:lower:]')
    DOTENV=".env"
    if [[ -n "$1" ]]; then
        DOTENV="$1"
    fi

    if [[ ! -f "$DOTENV" ]]; then
        echo "No $DOTENV file found."
        return 1
    fi

    # Prompt for KeePass database password silently
    read -s -p "Enter password to unlock $KEEPASS_DATABASE_FILE: " keepass_database_pass
    echo  # Add a newline after password input

    if echo "$keepass_database_pass" | keepassxc-cli show \
        --key-file "$KEEPASS_DATABASE_KEY_FILE" \
        --quiet \
        "$KEEPASS_DATABASE_FILE" \
        "$KEEPASS_ENTRY" >/dev/null 2>&1; then
        
        echo "Entry '$KEEPASS_ENTRY' already exists."
        
        # Try to remove existing .env attachment if it exists
        echo "Removing existing $DOTENV attachment (if any)..."
        echo "$keepass_database_pass" | keepassxc-cli attachment-rm \
            --key-file "$KEEPASS_DATABASE_KEY_FILE" \
            --quiet \
            "$KEEPASS_DATABASE_FILE" \
            "$KEEPASS_ENTRY" \
            "$DOTENV" 2>/dev/null
        
    else
        echo "Creating new entry: $KEEPASS_ENTRY"
        echo "$keepass_database_pass" | keepassxc-cli add \
            --key-file "$KEEPASS_DATABASE_KEY_FILE" \
            --password-prompt \
            "$KEEPASS_DATABASE_FILE" \
            "$KEEPASS_ENTRY"
    fi

    echo "Attaching $DOTENV file..."
    echo "$keepass_database_pass" | keepassxc-cli attachment-import \
        --key-file "$KEEPASS_DATABASE_KEY_FILE" \
        --quiet \
        "$KEEPASS_DATABASE_FILE" \
        "$KEEPASS_ENTRY" \
        "$DOTENV" \
        "$DOTENV"
    
    echo "Successfully saved $DOTENV as an attachment to '$KEEPASS_ENTRY'."
}
sdtk() {
    save-dotenv-to-keepass "$@"
}
