Aylar önce Python’daki argparse kütüphanesinden etkilenip C++’ta da benzer bir şey geliştirmek istemiştim. Bir iki gün içinde dandirik bir şey yapmış ve bırakmıştım. Şimdi aklıma geldi, eski fikrin üstüne ekleme yapmak istedim.
GitHub Linki
Fikir, temel olarak geliştiricinin CLI argümanlarını parse etmesine yardımcı olmaya yarıyor. Platforma bağlı olarak üç parser var: MacOS, Linux ve Windows. (Windows’u daha implemente etmedim; Linux olanı da biraz düzeltme istiyor.) Ayrıca test için Fake Parser var; argüman listesini elle veriyorsunuz. Diğerleri platformdan kendi alıyor.
Daha çok eksik var ama en azından multi-type parameter desteğini daha düzgün ve özelleştirilebilir hâle getirince paylaşmak istedim. Özellikle help kısmı ve required arg kısmına biraz daha düzenleme yapmam gerekiyor. Ayrıca flagleri sadece action değil store’da yapabilmek lazım, özellikle liste/multi-token parse’de eklemeli. Musait bir zamanda daha da geliştirebilirim.
Özellikler:
Guncelleme; Argumanlari artik boolean flag gibi veya depo gibi kullanabiliyoruz. Custom typelari da depolayabiliyor. Ornekler src/main.cpp icerisinde var.
GitHub Linki
Fikir, temel olarak geliştiricinin CLI argümanlarını parse etmesine yardımcı olmaya yarıyor. Platforma bağlı olarak üç parser var: MacOS, Linux ve Windows. (Windows’u daha implemente etmedim; Linux olanı da biraz düzeltme istiyor.) Ayrıca test için Fake Parser var; argüman listesini elle veriyorsunuz. Diğerleri platformdan kendi alıyor.
Daha çok eksik var ama en azından multi-type parameter desteğini daha düzgün ve özelleştirilebilir hâle getirince paylaşmak istedim. Özellikle help kısmı ve required arg kısmına biraz daha düzenleme yapmam gerekiyor. Ayrıca flagleri sadece action değil store’da yapabilmek lazım, özellikle liste/multi-token parse’de eklemeli. Musait bir zamanda daha da geliştirebilirim.
Özellikler:
- Custom type → Kendi parametre tiplerinizi ekleyebiliyorsunuz. Örneğin main.cpp dosyasında Point sınıfı için type-trait oluşturup ona özel bir echo aksiyonu ekledim. Böylece CLI’dan gelen 3,2 direkt Point sınıfına dönüp fonksiyonunuza geliyor. Tabii ki parser mantığını sizin yazmanız gerekiyor custom typelar için.
- Custom convention + multi convention → Convention, argümanların konsolda nasıl ifade edildiği. Örnek olarak GNU’nun convention’ını yaptım: uzun formda --, kısa formda - ile başlar, değerler genelde bir sonraki tokendedir. = işareti ile olan varyasyonu da var. Custom convention mantığıyla kendi conventionlarınızı ekleyebiliyorsunuz. Birden fazla convention varsa, başarısız olanı diğerine devrediyor; aynı kurala sahip iki tane varsa listedeki ilki kazanır.
Guncelleme; Argumanlari artik boolean flag gibi veya depo gibi kullanabiliyoruz. Custom typelari da depolayabiliyor. Ornekler src/main.cpp icerisinde var.
Son düzenleme: