Cobra: Profesyonel CLI (Komut Satırı) Araçları Tasarlama

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Top Poster Of Month
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:

  1. Commands (Komutlar): Eylem bildirir. (Örn: git commit)
  2. Arguments (Argümanlar): Nesnelerdir. (Örn: git commit -m "mesaj")
  3. Flags (Bayraklar): Eylemi modifiye eder. (Örn: --force, -v)

Kurulum ve Başlangıç​

Cobra, kendi kodunu üreten bir "CLI Generator" aracına sahiptir.

  1. Aracı kurun: go install github.com/spf13/cobra-cli@latest
  2. Projenizi başlatın:

    Bash

    mkdir myapp &amp;&amp; <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.

  1. Yeni komut ekle: cobra-cli add selamla
  2. 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(&amp;degisken, "uzun-isim", "kisa-isim", "varsayilan", "aciklama")<br>selamlaCmd.Flags().StringVarP(&amp;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!"

Sonuç​

Cobra, --help dokümantasyonunu otomatik üretir, hatalı komut girildiğinde "Bunu mu demek istediniz?" diye öneride bulunur. CLI aracı yazacaksanız, tekerleği yeniden icat etmeyin, Cobra kullanın.
 
Geri
Üst