Cobra CLI ile Kendi CLI Uygulamanızı Oluşturun

Veysel Aksin
Machine Learning Turkiye
5 min readDec 31, 2023

Bu yazıda, Cobra CLI kütüphanesini kullanarak kendi CLI aracınızı nasıl oluşturacağınızı detaylı bir şekilde anlatacağım. Bu yazıda Cobra CLI’nın ne olduğu, özellikleri, ve kendi CLI uygulamanızı nasıl oluşturacağınız yer alıyor. Bu bilgiler ışığında kendinize ait bir CLI uygulaması geliştirebileceksiniz. Keyifli okumalar 🎉🥳

İçerikler

  1. Cobra CLI Nedir?
  2. Cobra CLI’nın Özellikleri
  3. Cobra CLI ile CLI Uygulaması Oluşturma
  • Gerekli Kurulumlar
  • Proje Dizini ve Proje Geliştirme Aşaması
  • Projeyi Derleme Aşaması

4. Genel Değerlendirme

1. Cobra CLI Nedir?

Cobra, Go dili ile yazılmış CLI (Komut Satırı Arayüzü) uygulamaları oluşturmak için kullanılan bir kütüphanedir. Basit ve kullanımı kolaydır, bu sayede kendi CLI araçlarınızı hızlı ve etkili bir şekilde oluşturabilirsiniz. Çeşitli özellikleri sayesinde, karmaşık komutları ve alt komutları bile kolayca yönetebilirsiniz.

Cobra’nın sağladığı özellikler arasında komut otomatik tamamlama, yardım komutları ve bayrak (flag) desteği gibi özellikler bulunur. Bu özellikler, CLI araçlarınızın daha kullanıcı dostu, daha esnek ve güçlü olmasını sağlar. Cobra’nın sunduğu bu özellikler sayesinde, kendi CLI uygulamanızı oluşturmak daha basit bir hale gelir.

Cobra’yı kullanmaya başlamak için ilk olarak Go dilini bilmeniz gerekmektedir. Aksi takdirde Cobra CLI ile geliştirme yapmak sizi zorlayabilir. Cobra’nın dokümantasyonunu okuyarak kütüphanenin nasıl kullanılacağını daha detaylı bir şekilde öğrenebilirsiniz.

Sonuç olarak, Cobra CLI ile kendi CLI tool’unuzu oluşturmak, CLI uygulamaları geliştirmek için etkili bir yol olabilir. Cobra’nın sunduğu özellikler ve kolay kullanımı sayesinde, kendi CLI uygulamanızı hızlı ve etkili bir şekilde oluşturabilirsiniz.

2. Cobra CLI Özellikleri

Cobra CLI, bir dizi özellik sunar ki bu özellikler, CLI uygulamalarınızı daha verimli ve kullanıcı dostu hale getirmenize yardımcı olur.

  • Komut Otomatik Tamamlama: Cobra, komutları otomatik tamamlama özelliği sunar. Bu, kullanıcıların komutları daha hızlı ve daha az hata ile yazmalarını sağlar.
  • Yardım Komutları: Cobra, genişletilebilir yardım komutları sunar. Bu özellik, kullanıcıların CLI uygulamanızı nasıl kullanacaklarını daha kolay anlamalarını sağlar.
  • Flag Desteği: Cobra, flag’lerin kolayca tanımlanması ve kullanılması için destek sağlar. Bu, kullanıcıların komutları daha esnek bir şekilde kullanmalarını sağlar.
  • Alt Komut Desteği: Cobra, alt komutların kolayca tanımlanması ve kullanılması için destek sağlar. Bu, daha karmaşık CLI uygulamalarının oluşturulmasını kolaylaştırır.
  • Genişletilebilirlik: Cobra, genişletilebilir ve esnektir. Kendi komutlarınızı, flag’lerinizi ve alt komutlarınızı kolayca ekleyebilir ve özelleştirebilirsiniz.

Bu özellikler, Cobra’nın CLI uygulamalarını hızlı ve verimli bir şekilde oluşturmak için güçlü bir araç haline getirir.

3. Cobra CLI ile Kendi CLI Uygulamanızı Oluşturmak

Cobra CLI ile kendi CLI uygulamanızı oluşturmak oldukça basittir. İlk olarak, Cobra kitaplığını Go dilinde indirip projenize eklemeniz gerekmektedir. Cobra’nın dokümantasyonunu okuyarak kitaplığın nasıl kullanılacağını daha detaylı bir şekilde öğrenebilirsiniz. Bu adımda bir uygulama gerçekleştirip kullanımını daha iyi kavrayacağız.

3.1. Gerekli Kurulumlar

Cobra CLI kullanabilmek için bazı kurulumları gerçekleştirebilmemiz gereklidir. Adım adım aşağıdaki kurumları gerçekleştirerek proje dizinini oluşturabilir ve projemizi geliştirmeye başlayabiliriz.

  1. Cobra Kurulumu: go get -u github.com/spf13/cobra@latest komutu kullanılarak Cobra kütüphanesi bilgisayarınıza yüklenir. Bu sayede Cobra ile komut satırı arayüzü (CLI) uygulamaları geliştirebilirsiniz.
  2. Cobra CLI Kurulumu: go install github.com/spf13/cobra-cli@latest komutu kullanılarak cobra-cli aracı bilgisayarınıza yüklenir. ****Bu araç, Cobra kütüphanesini kullanarak komut satırı arayüzü (CLI) uygulamaları oluşturmanıza yardımcı olur. Cobra-cli aracı ile yapabileceğiniz bazı işlemler şunlardır:
  • Yeni bir proje başlatmak: cobra init --pkg-name github.com/your_user_name/testApp testApp
  • Yeni bir komut eklemek: cobra add start, cobra add stop vs.
  • Proje dokümantasyonunu oluşturmak: cobra doc --dir docs
  • Proje sürümünü belirlemek: cobra version --version 1.0.0

3.2. Proje Dizini ve Proje Geliştirme Aşaması

Proje dizin yapısı aşağıdaki gibi olacaktır:

.
└── testApp/
├── cmd/
│ ├── root.go
├── go.mod
├── go.sum
└── main.go

Bu dizin yapısı, Cobra kütüphanesinin önerdiği standart bir yapıdır. Bu yapı, testApp uygulamanızın ana dizinidir. Bu dizin içinde, cmd adında bir alt dizin vardır. Bu dizin, uygulamanızın komutlarını içerir. Her komut, bir Go dosyası olarak tanımlanır. Bu dosyalar, Cobra kütüphanesinin sağladığı cobra.Command yapısını kullanarak komutun ismini, açıklamasını, parametrelerini, bayraklarını (flag) ve çalıştırma fonksiyonunu belirtir.

cmd dizininizde root.go adında bir Go dosyası yer almaktadır. root.go dosyası, uygulamanın kök (root) komutunu tanımlar. Kök yani root komut, uygulamanızın ismiyle çağrılan ve diğer alt komutları yöneten komuttur. Örneğin, testApp komutu, kök komutunuzdur. root.go dosyasında, kök komutunuzun ismini, açıklamasını, kullanım şeklini ve varsayılan davranışını belirleyebilirsiniz. Ayrıca, kök komutunuzun alt komutlarını da root.go dosyasında ekleyebilirsiniz. Bu şekilde, uygulamanızın komut ağacını oluşturabilirsiniz.

Hadi uygulamamızı oluşturarak yeni komutlar öğrenerek kullanımı pekiştirelim.

Aşağıdaki komut satırlarını uygulayarak projeyi başlatabilirsiniz:

cd $HOME/code
mkdir testApp
cd testApp
go mod init github.com/<yourname>/testApp

Ardından, Cobra CLI aracını kullanarak uygulamanızın iskeletini oluşturabilirsiniz. Bunu yapmak için, şu komutu çalıştırabilirsiniz:

cobra-cli init

Bu komut, main.go ve cmd klasörü içinde root.go dosyasını oluşturacaktır. Bu dosyaları açarak uygulamanızın açıklamasını ve mantığını düzenleyebilirsiniz. Uygulamanızı çalıştırmak için, şu komutu kullanabilirsiniz:

go run main.go

Uygulamanıza yeni komutlar eklemek için, cobra-cli add komutunu kullanabilirsiniz. Örneğin, hello adında bir komut eklemek için, şu komutu çalıştırabilirsiniz:

cobra add hello

komutu ile tanımlayabilirsiniz. Bu sayede hello.go dosyası cobra-cli tarafından oluşturulacaktır. İlgili alanlar değiştirilerek komutun istenilen çıktıyı üretmesi sağlanabilir.

hello.go dosyası, uygulamanızın bir alt komutunu tanımlar. Bu komut, testApp hello şeklinde çağrılır. hello.go dosyasında, bu komutun ismini, açıklamasını, parametrelerini, bayraklarını (flag) ve çalıştırma fonksiyonunu belirleyebilirsiniz. Çalıştırma fonksiyonu, komut çağrıldığında yapılacak işlemleri içerir. Örneğin, hello.go dosyasında, testApp hello komutunun ekrana name parametresi verilirse ilgili ismi “Hello, ${name}” şeklinde yazdırsın şayet name parametresi verilmez ise varsayılan olarak “Hello, world!” yazdırdığını varsayalım. Kod bloğu aşağıdaki gibi olacaktır.

package cmd

import (
"fmt"

"github.com/spf13/cobra"
)

var name string // name flag for hello command

// helloCmd represents the hello command
var helloCmd = &cobra.Command{
Use: "hello",
Short: "A brief description of your command",
Long: `A longer description that spans multiple lines and likely contains
examples and usage of using your command. For example:

Cobra is a CLI library for Go that empowers applications.
This application is a tool to generate the needed files
to quickly create a Cobra application.`,
Run: func(cmd *cobra.Command, args []string) {
// TODO: Work your own magic here
fmt.Printf("Hello, %s!\\n", name) // print the name
},
}

func init() {
rootCmd.AddCommand(helloCmd)

// Here you will define your flags and configuration settings.

// Cobra supports Persistent Flags which will work for this command
// and all subcommands, e.g.:
// helloCmd.PersistentFlags().String("foo", "", "A help for foo")

// Cobra supports local flags which will only run when this command
// is called directly, e.g.:
// helloCmd.Flags().BoolP("toggle", "t", false, "Help message for toggle")
helloCmd.Flags().StringVarP(&name, "name", "n", "world", "name to greet") // add name flag to hello command
}

Projemizi geliştirme aşamasını tamamladığımıza göre proje dizinimiz aşağıdaki gibi olacaktır.

.
└── testApp/
├── cmd/
│ ├── root.go
│ └── hello.go
├── go.mod
├── go.sum
└── main.go

3.3. Projeyi Derleme Aşaması

Artık projeyi derleyip kullanmaya başlayabiliriz.

Bu kodu go install ile derlemek ve dağıtmak için, komut satırında şöyle yazabilirsiniz:

go install hello.go

Bu, hello adında bir çalıştırılabilir dosya oluşturacak ve $GOPATH/bin dizinine kopyalayacaktır. Bu dosyayı başka bir yerden çalıştırmak için, komut satırında şöyle yazabilirsiniz:

testApp hello --name Gopher

Bu komut, ekrana “Hello, Gopher!” yazdıracaktır.

Tebrikler ile CLI uygulamanızı geliştirdiniz 🥳 🎉.

4. Genel Değerlendirme

Cobra CLI, kendi CLI uygulamanızı oluşturmak için güçlü ve etkili bir araçtır. Bu kütüphanenin sunduğu özellikler ve kolay kullanımı sayesinde, kendi CLI uygulamanızı hızlı ve etkili bir şekilde oluşturabilirsiniz. Hem basit hem de karmaşık CLI uygulamaları için ideal bir çözüm sunar. Cobra CLI'nın sunduğu özellikler sayesinde, CLI uygulamalarınızı daha verimli ve kullanıcı dostu hale getirebilirsiniz. Umarım bu yazı, kendi CLI uygulamanızı oluştururken size yardımcı olur. Herkese keyifli kodlamalar dilerim!

--

--