İçeriğe geç
Mustafa Yalçın

CLI aracı · 2026

skycast

Terminalde hava durumu: ASCII çizimler, renk kodlu sıcaklıklar, tahminler ve karşılaştırmalar.

Durum
Yayında

Kısaca

Dünyanın her yeri için bir komut satırı hava durumu uygulaması. “skycast Istanbul” anlık durumu ASCII çizimle gösteriyor; forecast, hourly ve compare ile 16 güne kadar tahmin, saatlik sparkline grafikler ve yan yana şehirler geliyor. API anahtarı gerekmiyor: veri Open-Meteo’dan.

Neden yaptım

Çoğu hava durumu CLI’ı tek satırlık bir curl ya da ince bir API sarmalayıcı. Ben ürün gibi yapılmış bir tane istedim: 30 sütunda da pipe’ta da okunabilen çıktı, ne yapılacağını söyleyen hata mesajları ve bunu kanıtlayan bir test paketi.

Katkım

Hepsi — tasarım, kod, testler, CI ve npm yayını.

Öne çıkanlar

  • Dünyanın her yeri; yalnızca ad gerçekten belirsizse soruyor
  • Sistem diline göre seçilen İngilizce ve Türkçe, metrik ve imperial birimler
  • Betikler için sürümlü --json çıktısı ve anlamlı çıkış kodları
  • Önbellekten çevrimdışı çalışma, açık bir uyarıyla
  • bash, zsh ve fish için kabuk tamamlama
  • Çalışma zamanı bağımlılığı olmayan tek bir paket dosyası

Kararlar

  1. 01

    Sağlayıcılar bir arayüzün arkasında

    API yanıtları sınırda Zod ile doğrulanıp alan modellerine dönüştürülüyor. Komutlar ve görünümler Open-Meteo’yu hiç görmüyor; başka bir hava durumu API’si tek bir yeni sağlayıcı uzaklıkta.

  2. 02

    Taşmayan, kademeli daralan görünümler

    Tablolar önce en önemsiz sütunlarını bırakıyor ve her görünüm 30 sütuna kadar test ediliyor. Renkler truecolor’dan 256 ve 16 renge düşüyor; pipe’ta ya da NO_COLOR ile tamamen kayboluyor.

  3. 03

    Gerçek yanıtlarla test

    400’ü aşkın test kaydedilmiş gerçek API yanıtları üzerinde çalışıyor: görünüm snapshot’ları, 30’dan 160 sütuna genişlik taraması ve derlenmiş CLI’ın uçtan uca çalıştırılması; Linux, macOS ve Windows’ta Node 20, 22 ve 24 ile.

Teknolojiler

  • Node.js
  • TypeScript
  • Commander.js
  • Zod
  • Vitest
  • Open-Meteo