#!/bin/bash
# Add a new UID to an existing GPG key
# Usage: gpg-add-uid "Name" "email@example.com" [key-id]

set -e

if [[ $# -lt 2 ]]; then
    echo 'Usage: gpg-add-uid "Name" "email@example.com" [key-id]'
    echo ""
    echo "If key-id is not provided, uses the first secret key found."
    exit 1
fi

NAME="$1"
EMAIL="$2"
KEY_ID="${3:-$(gpg --list-secret-keys --keyid-format LONG 2>/dev/null | grep '^sec' | head -1 | sed 's/.*\/\([A-F0-9]*\) .*/\1/')}"

if [[ -z $KEY_ID ]]; then
    echo "Error: No GPG secret key found. Create one first with: gpg --full-generate-key"
    exit 1
fi

echo "Adding UID '$NAME <$EMAIL>' to key $KEY_ID"

# Use expect-like input via gpg --command-fd
gpg --batch --command-fd 0 --edit-key "$KEY_ID" <<EOF
adduid
$NAME
$EMAIL

O
save
EOF

echo "Done! New UID added. Verify with: gpg --list-keys $KEY_ID"
