package main
import (
"fmt"
"log"
"time"
"github.com/qzeleza/ziva"
)
func main() {
// Başlık ile görev kuyruğu oluştur
queue := ziva.NewQueue("Ziva Demo Uygulaması")
// Görünümü yapılandır
queue.WithAppName("BenimUygulamam")
queue.WithTasksNumbered(false, "[%d]")
// Görevleri oluştur
createTasks(queue)
// Kuyruğu çalıştır
if err := queue.Run(); err != nil {
log.Fatal(err)
}
// Sonuçları göster
printResults()
}
func createTasks(queue *ziva.Queue) {
// 1. Zaman aşımı ile onay görevi
confirm := ziva.NewYesNoTask("Onay", "Kuruluma başlansın mı?").
WithTimeout(5*time.Second, "Evet")
// 2. Ortam seçimi
environments := []string{
"development||Geliştirme ortamı",
"staging||Test ortamı",
"production||Canlı ortam",
}
env := ziva.NewSingleSelectTask("Ortam Seçimi", environments).
WithDefaultItem("staging")
// 3. Bileşen seçimi
components := []string{
"api||REST API sunucusu",
"web||Web arayüzü",
"cli||Komut satırı",
"docs||Belgeler",
}
comp := ziva.NewMultiSelectTask("Bileşenler", components).
WithSelectAll("Tümünü seç").
WithDefaultItems([]string{"api", "cli"})
// 4. Doğrulama ile proje adı girişi
name := ziva.NewInputTask("Proje Adı", "Adı girin:").
WithValidator(ziva.DefaultValidators.Required())
// 5. Fonksiyonel görev
setup := ziva.NewFuncTask("Kurulum", func() error {
time.Sleep(2 * time.Second) // İş simülasyonu
return nil
}, ziva.WithSummaryFunction(func() []string {
return []string{"Yapılandırma oluşturuldu", "Proje hazır"}
}))
// Tüm görevleri kuyruğa ekle
queue.AddTasks(confirm, env, comp, name, setup)
}
func printResults() {
fmt.Println("\n🎉 Uygulama tamamlandı!")
fmt.Println("Sonuçlar görev nesnelerinde saklandı.")
}