- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Siyah Ekranın Gücü
Modern DevOps dünyasında her şey bir CLI (Command Line Interface) aracıdır: kubectl, docker, git... Bu araçların ortak özelliği nedir? Çoğunun Go ile ve Cobra kütüphanesi kullanılarak yazılmış olmasıdır.Go'nun standart flag paketi basit işler için iyidir ama profesyonel, alt komutlu (app server start gibi) ve yapılandırılabilir araçlar için Cobra endüstri standardıdır.Temel Kavramlar
Cobra üç temel yapı taşından oluşur:- Commands (Komutlar): Eylem bildirir. (Örn: git commit)
- Arguments (Argümanlar): Nesnelerdir. (Örn: git commit -m "mesaj")
- Flags (Bayraklar): Eylemi modifiye eder. (Örn: --force, -v)
Kurulum ve Başlangıç
Cobra, kendi kodunu üreten bir "CLI Generator" aracına sahiptir.- Aracı kurun: go install github.com/spf13/cobra-cli@latest
- Projenizi başlatın:
Bash
mkdir myapp && <span>cd</span> myapp<br>go mod init myapp<br>cobra-cli init<br>
Bu komut, projenizde cmd klasörü ve root.go dosyasını oluşturur.
Alt Komut ve Flag Ekleme
Diyelim ki myapp selamla --isim Ahmet diye çalışan bir araç yapacağız.- Yeni komut ekle: cobra-cli add selamla
- Kodu düzenle (cmd/selamla.go):
Kod:
package cmd
import ("fmt""github.com/spf13/cobra")
var isim string // Flag değerini tutacak değişken
// selamlaCmd represents the selamla commandvar selamlaCmd = &cobra.Command{Use: "selamla",Short: "Kullanıcıyı selamlar",Long: Bu komut, verilen isme veya varsayılan dünyaya selam verir.,Run: func(cmd *cobra.Command, args []string) {fmt.Printf("Merhaba, %s!\n", isim)},}
func init() {rootCmd.AddCommand(selamlaCmd)
// Flag Tanımı: --isim veya -n<br>// StringFlagVar(&degisken, "uzun-isim", "kisa-isim", "varsayilan", "aciklama")<br>selamlaCmd.Flags().StringVarP(&isim, "isim", "n", "Dünya", "Selamlanacak kişinin adı")<br>
}
Çalıştırma
- go run main.go selamla -> Çıktı: "Merhaba, Dünya!"
- go run main.go selamla --isim Gopher -> Çıktı: "Merhaba, Gopher!"