Documentation Index
Fetch the complete documentation index at: https://ziva.zeleza.ru/llms.txt
Use this file to discover all available pages before exploring further.
Temel Kullanım Örnekleri
Bu sayfa Ziva ile TUI uygulamaları oluşturmanın pratik örneklerini içerir. Tüm örnekler çalıştırılmaya hazırdır ve kütüphanenin ana özelliklerini gösterir.Örnek 1: Basit Onay
Onay görevi ile temel örnek:package main
import (
"fmt"
"log"
"github.com/qzeleza/ziva"
)
func main() {
// Onay görevi oluştur
confirm := ziva.NewYesNoTask(
"Eylem Onayı",
"Tüm geçici dosyalar silinsin mi?",
)
// Kuyruk oluştur ve görev ekle
queue := ziva.NewQueue("Sistem Temizliği")
queue.AddTasks(confirm)
// Çalıştır
if err := queue.Run(); err != nil {
log.Fatal(err)
}
// Sonucu işle
if confirm.IsYes() {
fmt.Println("🗑️ Geçici dosyalar silindi")
} else {
fmt.Println("❌ İşlem iptal edildi")
}
}
Örnek 2: Listeden Seçim
Listeden tek seçenek seçme örneği:package main
import (
"fmt"
"log"
"github.com/qzeleza/ziva"
)
func main() {
// Açıklamalı seçenekler
environments := []string{
"dev||Geliştirme ortamı - yerel makine",
"staging||Test ortamı - QA için",
"production||Canlı ortam - kullanıcılar",
}
// Seçim görevi oluştur
envTask := ziva.NewSingleSelectTask(
"Dağıtım Ortamı Seçimi",
environments,
).WithDefaultItem("staging")
// Kuyruğu yapılandır ve çalıştır
queue := ziva.NewQueue("Uygulama Dağıtımı")
queue.WithAppName("DeployTool")
queue.AddTasks(envTask)
if err := queue.Run(); err != nil {
log.Fatal(err)
}
// Sonucu al
selected := envTask.GetSelected()
fmt.Printf("🚀 Dağıtım ortamı: %s\n", selected)
}
Örnek 3: Çoklu Seçim
Birden fazla bileşen seçme örneği:package main
import (
"fmt"
"log"
"strings"
"github.com/qzeleza/ziva"
)
func main() {
// Kurulacak bileşenler
components := []string{
"web||Web sunucusu",
"api||REST API",
"db||Veritabanı",
"cache||Önbellek",
"monitoring||İzleme",
"backup||Yedekleme",
}
// Çoklu seçim görevi oluştur
compTask := ziva.NewMultiSelectTask(
"Kurulacak bileşenleri seçin",
components,
).WithSelectAll("Tümünü kur").
WithDefaultItems([]string{"web", "api"})
queue := ziva.NewQueue("Sistem Kurulumu")
queue.AddTasks(compTask)
if err := queue.Run(); err != nil {
log.Fatal(err)
}
// Seçilen bileşenleri göster
selected := compTask.GetSelected()
if len(selected) > 0 {
fmt.Printf("📦 Kurulacaklar: %s\n",
strings.Join(selected, ", "))
} else {
fmt.Println("❌ Hiçbir bileşen seçilmedi")
}
}
Örnek 4: Doğrulama ile Giriş
Doğrulama ile kullanıcı verisi toplama örneği:package main
import (
"fmt"
"log"
"github.com/qzeleza/ziva"
)
func main() {
v := ziva.DefaultValidators
// Doğrulama ile giriş alanları oluştur
name := ziva.NewInputTask("İsim", "Adınızı girin:").
WithValidator(v.Required())
email := ziva.NewInputTask("Email", "Email adresinizi girin:").
WithInputType(ziva.InputTypeEmail).
WithValidator(v.Email())
website := ziva.NewInputTask("Site", "Website URL (opsiyonel):").
WithValidator(v.OptionalURL())
// Kuyruk oluştur
queue := ziva.NewQueue("Kullanıcı Kaydı")
queue.WithAppName("UserReg")
queue.AddTasks(name, email, website)
if err := queue.Run(); err != nil {
log.Fatal(err)
}
// Toplanan bilgileri göster
fmt.Println("\n✅ Kayıt tamamlandı:")
fmt.Printf("İsim: %s\n", name.GetValue())
fmt.Printf("Email: %s\n", email.GetValue())
if website.GetValue() != "" {
fmt.Printf("Website: %s\n", website.GetValue())
}
}
Örnek 5: Fonksiyonel Görev
Uzun süren işlem yürütme örneği:package main
import (
"log"
"math/rand"
"time"
"github.com/qzeleza/ziva"
)
func main() {
// Rapor verileri
var stats struct {
FilesProcessed int
Errors int
Duration time.Duration
}
// Fonksiyonel görev oluştur
processTask := ziva.NewFuncTask(
"Dosya İşleme",
func() error {
start := time.Now()
// Dosya işleme simülasyonu
for i := 0; i < 100; i++ {
time.Sleep(50 * time.Millisecond)
stats.FilesProcessed++
// Rastgele hatalar
if rand.Intn(20) == 0 {
stats.Errors++
}
}
stats.Duration = time.Since(start)
return nil
},
// Sonuç özeti fonksiyonu
ziva.WithSummaryFunction(func() []string {
return []string{
fmt.Sprintf("İşlenen dosya: %d", stats.FilesProcessed),
fmt.Sprintf("Hata: %d", stats.Errors),
fmt.Sprintf("Süre: %v", stats.Duration.Round(time.Millisecond)),
}
}),
)
queue := ziva.NewQueue("Toplu İşlem")
queue.AddTasks(processTask)
if err := queue.Run(); err != nil {
log.Fatal(err)
}
}
Örnek 6: Kapsamlı Uygulama
Web sunucusu yapılandırması için tam örnek:package main
import (
"fmt"
"log"
"strconv"
"time"
"github.com/qzeleza/ziva"
)
type ServerConfig struct {
Host string
Port int
SSL bool
CertPath string
Modules []string
}
func main() {
config := &ServerConfig{}
// Yapılandırma görevlerini oluştur
tasks := createConfigTasks(config)
// Kuyruğu yapılandır
queue := ziva.NewQueue("Web Sunucusu Yapılandırması")
queue.WithAppName("WebServerSetup").
WithTasksNumbered(true, "[%02d]").
WithTitleColor(ziva.BlueBright, true)
queue.AddTasks(tasks...)
if err := queue.Run(); err != nil {
log.Fatal(err)
}
// Son yapılandırmayı göster
printConfig(config)
}
func createConfigTasks(config *ServerConfig) []ziva.Task {
v := ziva.DefaultValidators
// 1. Host
hostTask := ziva.NewInputTask("Sunucu Host", "IP adresi veya domain:").
WithValidator(v.Required()).
WithTimeout(30*time.Second, "localhost")
// 2. Port
portTask := ziva.NewInputTask("Port", "Sunucu portu (1-65535):").
WithInputType(ziva.InputTypeNumber).
WithValidator(v.Port()).
WithTimeout(15*time.Second, "8080")
// 3. SSL
sslTask := ziva.NewYesNoTask("SSL", "HTTPS etkinleştirilsin mi?").
WithDefaultItem("Evet")
// 4. Modüller
modules := []string{
"auth||Kullanıcı kimlik doğrulama",
"cors||Cross-Origin Resource Sharing",
"compress||Yanıt sıkıştırma",
"static||Statik dosyalar",
"proxy||Ters proxy",
"cache||Önbellek",
}
moduleTask := ziva.NewMultiSelectTask("Modüller", modules).
WithSelectAll("Tüm modülleri etkinleştir").
WithDefaultItems([]string{"auth", "static"})
// 5. Yapılandırma uygulama fonksiyonel görevi
applyTask := ziva.NewFuncTask(
"Yapılandırma Uygulama",
func() error {
// Yapılandırmayı topla
config.Host = hostTask.GetValue()
if port, err := strconv.Atoi(portTask.GetValue()); err == nil {
config.Port = port
}
config.SSL = sslTask.IsYes()
config.Modules = moduleTask.GetSelected()
// Ayar uygulama simülasyonu
time.Sleep(2 * time.Second)
return nil
},
ziva.WithSummaryFunction(func() []string {
return []string{
"Yapılandırma uygulandı",
"Sunucu başlatılmaya hazır",
}
}),
)
return []ziva.Task{hostTask, portTask, sslTask, moduleTask, applyTask}
}
func printConfig(config *ServerConfig) {
fmt.Println("\n🔧 Sunucu Yapılandırması:")
fmt.Printf("Adres: %s:%d\n", config.Host, config.Port)
fmt.Printf("SSL: %v\n", config.SSL)
fmt.Printf("Modüller: %v\n", config.Modules)
// Bağlantı URL'si
protocol := "http"
if config.SSL {
protocol = "https"
}
fmt.Printf("\n🌐 URL: %s://%s:%d\n", protocol, config.Host, config.Port)
}
Kullanım İpuçları
1. Görev Gruplandırma
İlgili görevleri mantıksal olarak gruplandırın:// Kimlik doğrulama grubu
authTasks := []ziva.Task{
ziva.NewInputTask("Username", "Kullanıcı adı:"),
ziva.NewInputTask("Password", "Şifre:").WithInputType(ziva.InputTypePassword),
}
// Ayarlar grubu
configTasks := []ziva.Task{
ziva.NewSingleSelectTask("Theme", themes),
ziva.NewYesNoTask("Notifications", "Bildirimler etkinleştirilsin mi?"),
}
queue.AddTasks(authTasks...)
queue.AddTasks(configTasks...)
2. İptal İşleme
queue := ziva.NewQueue("Kurulum")
if err := queue.Run(); err != nil {
if err == context.Canceled {
fmt.Println("❌ Kurulum kullanıcı tarafından iptal edildi")
return
}
log.Fatal(err)
}
3. Yapılandırma Kaydetme
// Başarılı yürütmeden sonra
config := collectResults(tasks...)
if err := saveConfig(config); err != nil {
log.Printf("Kayıt hatası: %v", err)
}
Ayrıca Bakınız
- Gelişmiş Örnekler - karmaşık kullanım senaryoları
- Bileşenler - her bileşen hakkında detaylar
- Doğrulama - veri doğrulama sistemi