Go CLI Uygulamalarında Flag Parsing: Cobra Kütüphanesi Başlangıç
Go'da komut satırı uygulaması yazarken, kullanıcıdan aldığın parametreleri (flag) düzgün şekilde işlemek önemlidir. Cobra kütüphanesi bunu kolaylaştırır. Başlangıçta bayağı karmaşık görünebilir ama adım adım ilerlemek yeterli.
Cobra nedir? Kısaca, Go'da profesyonel CLI uygulamalar yazmak için tasarlanmış bir framework'tür. Flag parsing, alt komutlar (subcommand), otomatik yardım metni ve hatta bash tamamlama gibi özellikler sunuyor.
Kurulum
Önce Cobra'yı projen içine ekle:
1go get -u github.com/spf13/cobra/v2İlk Uygulama
Basit bir örnek yapacağız. Bir kişiye selamlama yapan bir program:
1package main23import (4"fmt"5"github.com/spf13/cobra"6)78var name string910var rootCmd = &cobra.Command{11Use: "greeter",12Short: "Bir kişiye selamla",13Run: func(cmd *cobra.Command, args []string) {14if name == "" {15fmt.Println("Merhaba Dünya!")16} else {17fmt.Printf("Merhaba %s!\n", name)18}19},20}2122func init() {23rootCmd.Flags().StringVarP(&name, "name", "n", "", "Selamlanacak kişinin adı")24}2526func main() {27rootCmd.Execute()28}Bu kodu derle ve çalıştır:
1go run main.goÇıktı:
1Merhaba Dünya!Flag ile çalıştır:
1go run main.go --name AhmetÇıktı:
1Merhaba Ahmet!Kısa form da çalışır:
1go run main.go -n AyşeÇıktı:
1Merhaba Ayşe!Nasıl Çalışıyor?
Cobra'da her komut bir cobra.Command yapısıdır. Use komutun adı, Short kısa açıklama, Run ise çalıştırılacak fonksiyondur. init() içinde Flags() ile flag tanımlarsın. StringVarP() string türü bir flag ekler; parametreler sırasıyla değişken adresi, uzun adı, kısa adı ve varsayılan değeridir.
Yardım metni otomatik:
1go run main.go --helpCobra bunu kendi hazırlar. Alt komutlar eklemek, daha karmaşık uygulamalar yapmak da mümkün. Ama başlangıç için bu temel yapı yeterli. Flag parsing artık sistem tarafından yönetilir, sen sadece iş mantığına odaklanırsın.
0 yorum