#!/bin/bash
# Export GPG public key
# Usage: gpg-public-key [-c] [key-id or email]
#   -c    Copy to clipboard instead of printing

set -e

COPY=false
KEY_ID=""

# Parse arguments
while [[ $# -gt 0 ]]; do
    case "$1" in
    -c | --copy)
        COPY=true
        shift
        ;;
    *)
        KEY_ID="$1"
        shift
        ;;
    esac
done

# If no key specified, use first secret key
if [[ -z $KEY_ID ]]; then
    KEY_ID=$(gpg --list-secret-keys --keyid-format LONG 2>/dev/null | grep '^sec' | head -1 | sed 's/.*\/\([A-F0-9]*\) .*/\1/')
fi

if [[ -z $KEY_ID ]]; then
    echo "Error: No GPG key found"
    exit 1
fi

if $COPY; then
    if [[ "$(uname)" == "Darwin" ]]; then
        gpg --armor --export "$KEY_ID" | pbcopy
        echo "Public key copied to clipboard"
    elif command -v xclip &>/dev/null; then
        gpg --armor --export "$KEY_ID" | xclip -selection clipboard
        echo "Public key copied to clipboard"
    elif command -v wl-copy &>/dev/null; then
        gpg --armor --export "$KEY_ID" | wl-copy
        echo "Public key copied to clipboard"
    else
        echo "Error: No clipboard tool found (pbcopy, xclip, or wl-copy)"
        exit 1
    fi
else
    gpg --armor --export "$KEY_ID"
fi
