CodeBlanks Logo Icon CodeBlanks

Birleştirme

process.argv ile çalışan bir CLI uygulaması yazarsın.

Birleştirme: process.argv CLI

Son derste tüm parçaları birleştirip komut satırından çalışan bir uygulama yapacaksın. process.argv dizisi, komut satırından verilen argümanları taşır.

Node.js'te process.argv üç bölümden oluşur: argv[0] Node yoludur, argv[1] çalıştırılan dosyanın yoludur, argv[2] ve sonrası ise kullanıcının verdiği argümanlardır. Yani ilk komut process.argv[2]'de bulunur.

Örnek: node todo.js list çağrısında process.argv[2] 'list' değerini alır. node todo.js add Domates çağrısında ise argv[2] 'add', argv[3] 'Domates''tir. Bu argümanları okuyarak uygulamanın davranışını yönetirsin.

Komut işleme

Bir CLI uygulaması, kullanıcının verdiği komutu okur ve buna göre davranır. Temel desen şöyledir: const command = process.argv[2]; ile komutu al, sonra if (command === 'list') gibi koşullarla dallan.

Bu projede üç komut desteklenecek: list görevleri listeler, add yeni görev ekler, done bir görevi tamamlar. Komut yoksa varsayılan olarak listeleme yapılır.

Örnek: if (command === 'add') { addTask(tasks, process.argv[3]); }. Bu, node todo.js add Domates çağrısında 'Domates' başlıklı yeni bir görev ekler. Her komut kendi dalında işlenir.

Uygulama Tam CLI uygulaması

Başlangıç kodunda addTask, listTasks ve completeTask fonksiyonları verildi. Üç görev ekle ('Ekmek al', 'Süt al', 'Yumurta al'). process.argv[2]'den komutu oku. listTasks(tasks) ile görevleri her zaman yazdır.

Başlangıç kodu

index.js
function addTask(tasks, title) {
  tasks.push({ title, done: false });
}
function listTasks(tasks) {
  tasks.forEach((t, i) => console.log((t.done ? '[x] ' : '[ ] ') + t.title));
}
function completeTask(tasks, index) {
  if (index < tasks.length) {
    tasks[index].done = true;
  }
}
// Üç görev ekle, process.argv'den komut oku ve listele

Örnek çözüm

index.js
function addTask(tasks, title) {
  tasks.push({ title, done: false });
}
function listTasks(tasks) {
  tasks.forEach((t, i) => console.log((t.done ? '[x] ' : '[ ] ') + t.title));
}
function completeTask(tasks, index) {
  if (index < tasks.length) {
    tasks[index].done = true;
  }
}
const tasks = [];
addTask(tasks, 'Ekmek al');
addTask(tasks, 'Süt al');
addTask(tasks, 'Yumurta al');
const command = process.argv[2];
listTasks(tasks);

Beklenen çıktı

[ ] Ekmek al
[ ] Süt al
[ ] Yumurta al

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 process.argv[2] ne içerir?

  • Dosya yolunu
  • Node yolunu
  • Kullanıcının ilk komutunu Doğru cevap
  • Görev listesini

Açıklama: argv[0] Node, argv[1] dosya, argv[2] kullanıcının ilk komutudur.

2 CLI parçalarını eşle

Kavram Anlamı
process.argv Argüman dizisi
argv[0] Node yolu
argv[1] Dosya yolu
argv[2] Kullanıcının ilk komutu

3 Komutu oku

Soru
const command = process.argv[____];
Cevap
const command = process.argv[2];

Açıklama: argv[2] kullanıcının ilk komutunu taşır.

Başlangıç bölümündeki tüm dersler