CLI (Komut Satırı Arayüzü)
Statigo, önceden oluşturma ve önbellek yönetimi gibi yaygın işlemler için bir CLI framework içerir.
Yerleşik Komutlar
prerender
Önbelleği ısıtmak için tüm sayfaları önceden oluşturun:
./statigo prerender
Bu komut:
- Yapılandırmadan tüm rotaları yükler
- Her rotaya istek yapar
- Yanıtları önbelleğe depolar
- Her sayfa için başarı/başarısızlık raporlar
Kullanım için:
- İlk dağıtım
- Yeniden başlatmadan sonra önbellek ısıtma
- Tüm sayfaların önbelleğe alındığından emin olma
clear-cache
Tüm önbelleğe alınan sayfaları temizleyin:
./statigo clear-cache
Bu komut:
- Bellek önbelleğindeki tüm girdileri siler
- Disk önbelleğindeki tüm dosyaları siler
- Temizlenen girdi sayısını raporlar
Kullanım için:
- Önbellek yenilemeye zorlama
- Disk alanını boşaltma
- Önbellek sorunlarını giderme
CLI Kullanma
Komutları Kaydetme
main.go içinde:
import "statigo/framework/cli"
func main() {
// Bileşenlerinizi başlat...
// CLI örneği oluştur
cliInstance := cli.New()
// Yerleşik komutları kaydet
cli.RegisterPrerenderCommand(cliInstance, r, cacheManager, logger)
cli.RegisterClearCacheCommand(cliInstance, cacheManager, logger)
// CLI komutu sağlanıp sağlanmadığını kontrol et
if len(os.Args) > 1 {
if err := cliInstance.Run(os.Args[1], os.Args[2:]); err == nil {
// Komut başarıyla yürütüldü
return
}
}
// CLI komutu yoksa sunucuyu başlat
// ... sunucu kodunuz ...
}
Özel Komutlar Oluşturma
import "statigo/framework/cli"
// Komut işleyicinizi tanımlayın
func MyCommandHandler(args []string, appCLI *cli.CLI) error {
fmt.Println("Özel komutum çalışıyor")
fmt.Println("Argümanlar:", args)
return nil
}
// Komutu kaydedin
cliInstance.Register("my-command", cli.Command{
Handler: MyCommandHandler,
Usage: "my-command [args...]",
Summary: "Komutumun açıklaması",
Aliases: []string{"mc", "my-c"},
})
Bağımlılıkları Olan Komut
Uygulama bileşenlerinizi komut işleyicilerine geçirin:
func ExportDataCommand(args []string, appCLI *cli.CLI) error {
// appCLI.Context'ten bağımlılıklara erişin
db := appCLI.Context["db"].(*Database)
cache := appCLI.Context["cache"].(*cache.Manager)
// Komut mantığınız...
return nil
}
// Kaydetmeden önce bağlamı ayarlayın
cliInstance.Context["db"] = database
cliInstance.Context["cache"] = cacheManager
cliInstance.Register("export", cli.Command{
Handler: ExportDataCommand,
Usage: "export [format]",
Summary: "Verileri çeşitli formatlarda dışa aktar",
})
Komut Takma Adları
Komutlar birden fazla ada (takma ad) sahip olabilir:
cliInstance.Register("version", cli.Command{
Handler: VersionHandler,
Usage: "version",
Summary: "Sürüm bilgilerini göster",
Aliases: []string{"v", "ver", "--version"},
})
Tümü çalışır:
./statigo version
./statigo v
./statigo ver
./statigo --version
CLI Bağlamı
Sunucu başlatma ve CLI komutları arasında veri paylaşın:
func main() {
// Bileşenleri başlat
cacheManager := cache.NewManager(...)
database := db.Connect(...)
// CLI oluştur
cliInstance := cli.New()
// Bağlam üzerinden bileşenleri paylaş
cliInstance.Context["cache"] = cacheManager
cliInstance.Context["db"] = database
// Bu bileşenleri kullanan komutları kaydet
cli.RegisterPrerenderCommand(cliInstance, r, cacheManager, logger)
// CLI komutunu kontrol et
if len(os.Args) > 1 {
command := os.Args[1]
args := os.Args[2:]
if err := cliInstance.Run(command, args); err == nil {
return // Komut yürütüldü
}
}
// Sunucuyu başlat...
}
Örnek: Özel Sağlık Kontrolü Komutu
func HealthCheckCommand(args []string, appCLI *cli.CLI) error {
logger := appCLI.Context["logger"].(*slog.Logger)
// Çeşitli bileşenleri kontrol et
checks := map[string]bool{
"database": checkDatabase(),
"cache": checkCache(),
"api": checkAPI(),
}
allHealthy := true
for name, healthy := range checks {
status := "TAMAM"
if !healthy {
status = "BAŞARISIZ"
allHealthy = false
}
fmt.Printf("%s: %s\n", name, status)
}
if allHealthy {
fmt.Println("\nTüm sistemler operasyonel")
return nil
}
return fmt.Errorf("bazı sağlık kontrolleri başarısız")
}
// Kaydet
cliInstance.Register("health", cli.Command{
Handler: HealthCheckCommand,
Usage: "health",
Summary: "Tüm bileşenlerde sağlık kontrolleri çalıştır",
})
Yardım Metni
Statigo CLI otomatik olarak yardım metni oluşturur:
./statigo help
Çıktı:
Mevcut komutlar:
prerender Önbelleğe tüm sayfaları önceden oluştur
clear-cache Tüm önbelleğe alınan sayfaları temizle
health Tüm bileşenlerde sağlık kontrolleri çalıştır
help Bu yardım iletisini göster
Bir komut hakkında daha fazla bilgi için "statigo help <komut>" kullanın.
Derleme Süreciyle Entegrasyon
Makefile'ınıza ekleyin:
.PHONY: build prerender run
build:
go build -o statigo
prerender: build
./statigo prerender
run: build
./statigo
deploy: build prerender
# Dağıtım komutları...
Sonra:
make prerender # Derle ve önceden oluştur
make deploy # Sıcak önbellekle dağıt