diff --git a/README.md b/README.md new file mode 100644 index 0000000..50ad209 --- /dev/null +++ b/README.md @@ -0,0 +1,176 @@ +# 🧩 switch_api_key — Claude API Key Switcher for macOS + +`switch_api_key`, proje dizininde bulunan `.env` dosyasını okuyarak **Claude API anahtarları arasında geçiş** yapmanızı sağlayan bir Bash betiğidir. +Her çalıştırıldığında aktif anahtarı değiştirir, gerekli ortam değişkenlerini yükler, eski `claude` CLI oturumlarını kapatır ve yeni ayarlarla CLI’ı yeniden başlatır. + +Bu sayede, örneğin **LITE** ve **PRO** API anahtarlarını tek komutla değiştirebilir, her biriyle farklı kota veya model ayarlarını test edebilirsiniz. + +--- + +## ⚙️ Özellikler + +- 🔁 **Tek komutla API anahtarlarını değiştirir** +- 🧠 **Claude CLI’ı otomatik olarak yeniden başlatır** +- 📦 **.env dosyasından ayarları okur ve günceller** +- 🌐 **Base URL ve model değerlerini otomatik export eder** +- 🚫 **Auth çakışmalarını otomatik temizler** + (`ANTHROPIC_AUTH_TOKEN` değişkeni varsa kaldırılır) + +--- + +## 📂 .env Dosyası Yapısı + +Proje dizininde `.env` dosyanız şu formatta olmalıdır: + +```bash +# === Claude API Config === +API_KEY_LITE=LITE_KEY_BURAYA +API_KEY_PRO=PRO_KEY_BURAYA +ACTIVE_KEY=lite + +# === Anthropic API Settings === +ANTHROPIC_BASE_URL="https://api.z.ai/api/anthropic" +ANTHROPIC_MODEL="glm-4.6" +``` + +| Değişken | Açıklama | +|-----------|-----------| +| `API_KEY_LITE` | LITE planına ait Claude API anahtarı | +| `API_KEY_PRO` | PRO planına ait Claude API anahtarı | +| `ACTIVE_KEY` | Şu anda aktif olan anahtar (`lite` veya `pro`) | +| `ANTHROPIC_BASE_URL` | API’nin taban URL adresi | +| `ANTHROPIC_MODEL` | Kullanılacak model ismi | + +--- + +## 🧩 Kurulum + +1. Betik dosyasını oluştur: + + ```bash + sudo nano /usr/local/bin/switch_api_key + ``` + +2. Aşağıdaki kodu yapıştır: + + ```bash + #!/bin/bash + ENV_FILE=".env" + + GREEN="\033[0;32m" + YELLOW="\033[0;33m" + CYAN="\033[0;36m" + RESET="\033[0m" + + # 0️⃣ AUTH TOKEN ÇAKIŞMASINI ENGELLE + if [[ -n "$ANTHROPIC_AUTH_TOKEN" ]]; then + echo -e "${YELLOW}⚠️ ANTHROPIC_AUTH_TOKEN tespit edildi. Kaldırılıyor...${RESET}" + unset ANTHROPIC_AUTH_TOKEN + sleep 1 + fi + + # 1️⃣ .env kontrolü + if [[ ! -f "$ENV_FILE" ]]; then + echo -e "${YELLOW}⚠️ Bu dizinde .env dosyası bulunamadı.${RESET}" + exit 1 + fi + + # 2️⃣ .env dosyasını yükle + set -a; source "$ENV_FILE"; set +a + + echo "----------------------------------------" + echo -e "${CYAN}🔍 Mevcut aktif key: $ACTIVE_KEY${RESET}" + + # 3️⃣ Aktif anahtarı değiştir + if [[ "$ACTIVE_KEY" == "lite" ]]; then + export ANTHROPIC_API_KEY="$API_KEY_PRO" + NEW_DESC="Claude Code PRO api key" + NEW_ACTIVE="pro" + else + export ANTHROPIC_API_KEY="$API_KEY_LITE" + NEW_DESC="Claude Code LITE api key" + NEW_ACTIVE="lite" + fi + + # 4️⃣ Ortam değişkenlerini yükle + export ANTHROPIC_BASE_URL=$ANTHROPIC_BASE_URL + export ANTHROPIC_MODEL=$ANTHROPIC_MODEL + + # 5️⃣ .env güncelle + sed -i '' "s/^ACTIVE_KEY=.*/ACTIVE_KEY=$NEW_ACTIVE/" "$ENV_FILE" + + echo -e "${YELLOW}🧩 Yeni key seçildi:${RESET} $NEW_DESC" + echo -e "${CYAN}🔁 .env dosyası güncellendi (ACTIVE_KEY=$NEW_ACTIVE)${RESET}" + + # 6️⃣ Claude süreçlerini kapat + echo -e "${YELLOW}💀 Çalışan Claude CLI süreçleri kapatılıyor...${RESET}" + pkill -f "claude" 2>/dev/null + sleep 3 + + # 7️⃣ Bilgilendirme + tail4="${ANTHROPIC_API_KEY: -4}" + echo -e "${GREEN}✅ Yeni key aktif:${RESET} $NEW_DESC" + echo -e "${CYAN}🔑 Son 4 hane: ****${tail4}${RESET}" + echo -e "${CYAN}🌐 Base URL:${RESET} $ANTHROPIC_BASE_URL" + echo -e "${CYAN}🧠 Model:${RESET} $ANTHROPIC_MODEL" + echo -e "${CYAN}⏳ Son kontroller yapılıyor...${RESET}" + sleep 3 + + # 8️⃣ Claude CLI başlat + echo -e "${GREEN}🚀 Yeni key ile Claude CLI başlatılıyor...${RESET}" + echo "----------------------------------------" + exec claude + ``` + +3. Çalıştırılabilir hale getir: + ```bash + sudo chmod +x /usr/local/bin/switch_api_key + ``` + +--- + +## 🚀 Kullanım + +Proje dizininde `.env` dosyası mevcutken sadece şu komutu çalıştır: + +```bash +switch_api_key +``` + +### 🔁 Betik ne yapar? + +1. `.env` dosyasını okur +2. `ANTHROPIC_AUTH_TOKEN` varsa **unset** eder (çakışmayı önler) +3. Aktif API anahtarını tespit eder (`lite` ↔ `pro`) +4. Diğer anahtara geçer +5. `.env` dosyasındaki `ACTIVE_KEY` satırını günceller +6. Base URL ve modeli `export` eder +7. Çalışan `claude` CLI süreçlerini kapatır +8. 3 saniye bekler +9. Yeni anahtar ve ayarlarla `claude` CLI’ı başlatır + +--- + +## 🧠 Örnek Çalışma Çıktısı + +```bash +---------------------------------------- +🔍 Mevcut aktif key: lite +🧩 Yeni key seçildi: Claude Code PRO api key +🔁 .env dosyası güncellendi (ACTIVE_KEY=pro) +💀 Çalışan Claude CLI süreçleri kapatılıyor... +✅ Yeni key aktif: Claude Code PRO api key +🔑 Anahtar son 4 hane: ****7e8a +🌐 Base URL: https://api.z.ai/api/anthropic +🧠 Model: glm-4.6 +🚀 Claude CLI yeni key ve ayarlarla başlatılıyor... +---------------------------------------- +``` + +--- + +## 💡 İpucu + +Her projenin kendi `.env` dosyası olabilir. +Betik, **bulunduğun dizindeki** `.env` dosyasını baz alır. +Farklı projeler farklı API anahtarları ve modellerle izole çalışabilir.