Alt Komutlar
Yapılandırılmış CLI'lar
Alt Komutlar, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.
Alt komutlar nedir?
Alt komutlar, tek bir ikili dosyanın git commit ve git push gibi birden fazla eylem sunmasını sağlar.
- Her alt komutun kendi argümanları vardır
- Yapı, CLI'niz büyüdükçe ölçeklenir
clap bunları iç içe Command değerleriyle modeller.
Alt komut ekleme
.subcommand() ile bir alt komut bağlayın. Üst komut bir yönlendiriciye dönüşür.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand(Command::new("add"))
.subcommand(Command::new("list"))
.get_matches();
}Seçilen alt komutu eşleştirme
Ayrıştırmadan sonra subcommand(), hangi alt komutun çalıştığını size bildirir. Yönlendirme yapmak için adını eşleştirin.
use clap::Command;
fn main() {
let m = Command::new("todo")
.subcommand(Command::new("add"))
.subcommand(Command::new("list"))
.get_matches();
match m.subcommand() {
Some(("add", _)) => println!("adding"),
Some(("list", _)) => println!("listing"),
_ => println!("no subcommand"),
}
}Alt komut içindeki argümanlar
Bir alt komut kendi argümanlarını taşır. Aşağıdaki add komutu bir görev açıklaması alır.
use clap::{Command, Arg};
fn main() {
Command::new("todo")
.subcommand(
Command::new("add")
.arg(Arg::new("task").required(true))
)
.get_matches();
}Alt komut argümanlarını okuma
İkinci demet öğesi, alt komuta ait ArgMatches değeridir. Değerleri, en üst düzeyde yaptığınız gibi buradan alın.
use clap::{Command, Arg};
fn main() {
let m = Command::new("todo")
.subcommand(Command::new("add").arg(Arg::new("task")))
.get_matches();
if let Some(("add", sub)) = m.subcommand() {
let task = sub.get_one::<String>("task").unwrap();
println!("add: {}", task);
}
}Alt komut zorunlu kılma
Çıplak ikili dosya çalıştırıldığında hiçbir şey yapmaması yerine yardım metnini yazdırması için subcommand_required(true) kullanın.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand_required(true)
.arg_required_else_help(true)
.subcommand(Command::new("list"))
.get_matches();
}Yönlendirmeyi saf Rust ile modelleme
Alt komutlu bir CLI'nin özü, bir dize üzerinde eşleştirme yapmaktır. Bu çalıştırılabilir örnek, söz konusu yönlendirme mantığını yansıtır.
fn main() {
let cmd = "add";
let task = "Buy milk";
match cmd {
"add" => println!("Added: {}", task),
"list" => println!("Listing tasks"),
other => println!("Unknown command: {}", other),
}
}İç içe alt komutlar
Alt komutların da alt komutları olabilir; örneğin cargo build --release veya daha derin ağaçlar. Daha fazla .subcommand() çağrısını iç içe yerleştirmeniz yeterlidir.
use clap::Command;
fn main() {
Command::new("app")
.subcommand(
Command::new("config")
.subcommand(Command::new("get"))
.subcommand(Command::new("set"))
)
.get_matches();
}Alt komuta özel yardım
Her alt komutun kendine ait bir --help sayfası olur. Açıklamak için bir about dizesi ekleyin.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand(
Command::new("add").about("Add a new task")
)
.get_matches();
}Takma adlar
visible_alias ile kullanıcılara kısayollar sunun. Artık ls, list ile aynı şekilde çalışır.
use clap::Command;
fn main() {
Command::new("todo")
.subcommand(
Command::new("list").visible_alias("ls")
)
.get_matches();
}Çıkış kodları döndürme
İyi tasarlanmış bir CLI başarıyı veya başarısızlığı bildirir. Bir alt komuttan std::process::exit kullanarak ya da main'den Result döndürerek sıfır olmayan bir kod döndürün.
fn main() {
let success = true;
if !success {
std::process::exit(1);
}
println!("ok");
}Hızlı kontrol
Alt komutları anlayıp anlamadığınızı test edin.
Özet
Artık alt komutlarla yapılandırılmış CLI'ler oluşturabiliyorsunuz:
.subcommand()ile alt komutlar eklemem.subcommand()eşleştirmesiyle yönlendirme yapma- Her alt komutun kendi argümanları ve yardım sayfası vardır
- Daha iyi bir kullanıcı deneyimi için
subcommand_requiredve takma adları kullanma
Sırada: derive API'si yapıları argüman ayrıştırıcılara dönüştürüyor.
Sıkça Sorulan Sorular
“Alt Komutlar” dersi ücretsiz mi?
Evet — “Alt Komutlar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.
“Alt Komutlar” dersinde ne öğreneceğim?
Yapılandırılmış CLI'lar Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Alt Komutlar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- clap Temelleri
- Alt Komutlar
- Türetme API'si
- Doğrulama ve Yardım