nix/bin/gpg-public-key
2025-12-03 20:09:09 -06:00

51 lines
1.2 KiB
Bash
Executable file

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