#!/bin/bash
# GitHub SSH Key Oluşturma ve Kurulum Scripti

set -euo pipefail

echo "=== GitHub SSH Key Kurulumu ==="
echo ""

# E-posta adresi al
read -p "GitHub e-posta adresinizi girin: " EMAIL

if [ -z "$EMAIL" ]; then
    echo "Hata: E-posta adresi boş olamaz."
    exit 1
fi

# Key dosya adı
KEY_NAME="id_ed25519_github"
KEY_PATH="$HOME/.ssh/$KEY_NAME"

# .ssh klasörü yoksa oluştur
mkdir -p "$HOME/.ssh"
chmod 700 "$HOME/.ssh"

# Mevcut key kontrolü
if [ -f "$KEY_PATH" ]; then
    echo ""
    echo "Uyari: $KEY_PATH zaten mevcut."
    read -p "Üzerine yazmak istiyor musunuz? (e/h): " OVERWRITE
    if [ "$OVERWRITE" != "e" ]; then
        echo "İşlem iptal edildi."
        exit 0
    fi
fi

# SSH key oluştur (Ed25519 - modern ve güvenli)
echo ""
echo "SSH key oluşturuluyor..."
ssh-keygen -t ed25519 -C "$EMAIL" -f "$KEY_PATH" -N ""

echo ""
echo "SSH key başarıyla oluşturuldu!"

# SSH agent'a ekle
eval "$(ssh-agent -s)" > /dev/null 2>&1

# macOS Keychain entegrasyonu için SSH config ayarla
SSH_CONFIG="$HOME/.ssh/config"
if ! grep -q "github.com" "$SSH_CONFIG" 2>/dev/null; then
    cat >> "$SSH_CONFIG" <<EOF

Host github.com
    HostName github.com
    User git
    IdentityFile $KEY_PATH
    AddKeysToAgent yes
    UseKeychain yes
EOF
    chmod 600 "$SSH_CONFIG"
    echo "SSH config güncellendi."
fi

# Key'i agent'a ekle (macOS Keychain ile)
ssh-add --apple-use-keychain "$KEY_PATH" 2>/dev/null || ssh-add "$KEY_PATH"

# Public key'i göster ve kopyala
echo ""
echo "================================================"
echo "  Public key'iniz (aşağıdaki GitHub'a eklenecek):"
echo "================================================"
echo ""
cat "${KEY_PATH}.pub"
echo ""

# Panoya kopyala
if command -v pbcopy >/dev/null 2>&1; then
  pbcopy < "${KEY_PATH}.pub"
  echo "[Otomatik olarak panoya kopyalandı!]"
elif command -v xclip >/dev/null 2>&1; then
  xclip -selection clipboard < "${KEY_PATH}.pub"
  echo "[Otomatik olarak panoya kopyalandı! (xclip)]"
else
  echo "[Panoya kopyalanamadı  -  yukarıdaki anahtarı manuel kopyalayın]"
fi

echo ""
echo "=== Sonraki Adımlar ==="
echo "1. https://github.com/settings/ssh/new adresine gidin"
echo "2. 'Title' alanına bir isim verin (ör: MacBook)"
echo "3. 'Key' alanına kopyalanan key'i yapıştırın (Cmd+V)"
echo "4. 'Add SSH key' butonuna tıklayın"
echo ""

# GitHub'a key eklendikten sonra test
read -p "Key'i GitHub'a ekledikten sonra test etmek ister misiniz? (e/h): " TEST
if [ "$TEST" = "e" ]; then
    echo ""
    echo "GitHub bağlantısı test ediliyor..."
    ssh -T git@github.com 2>&1 || true
fi

echo ""
echo "Tamamlandı!"
