#!/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