The Meowgorithm Dotfiles, Collectors’ Edition
#!/usr/bin/env bash
set -euo pipefail
SSH_AGENT_SOCKET="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/ssh-agent.socket"
check_ssh_agent() {
if [[ -S "$SSH_AGENT_SOCKET" ]]; then
SSH_AUTH_SOCK="$SSH_AGENT_SOCKET" ssh-add -l &>/dev/null
return $?
fi
return 1
}
add_keys() {
local keys=()
for key in "$HOME/.ssh"/id_*; do
[[ -f "$key" && "$key" != *.pub && "$key" != *.so ]] && keys+=("$key")
done
if (( ${#keys[@]} > 0 )); then
SSH_AUTH_SOCK="$SSH_AGENT_SOCKET" ssh-add "${keys[@]}" 2>/dev/null
echo "Added ${#keys[@]} key(s) to ssh-agent"
else
echo "No SSH keys found in $HOME/.ssh"
fi
}
case "${1:-check}" in
check)
if check_ssh_agent; then
echo "ssh-agent is running and keys are loaded:"
SSH_AUTH_SOCK="$SSH_AGENT_SOCKET" ssh-add -l
elif [[ -S "$SSH_AGENT_SOCKET" ]]; then
echo "ssh-agent socket exists but no keys loaded"
else
echo "ssh-agent is not running"
fi
;;
add-keys)
add_keys
;;