Mini-Projeto: Gerenciador de Tarefas CLI 📝
Neste projeto, você vai transformar os conceitos de CLI e manipulação de arquivos em uma ferramenta útil para o dia a dia: um gerenciador de tarefas (Todo List).
📋 Requisitos
- Interface Profissional: Use a crate
clappara gerenciar os comandos. - Comandos:
add "nome da tarefa": Adiciona uma tarefa ao arquivotarefas.txt.list: Lista todas as tarefas numeradas.
- Persistência: As tarefas devem ser salvas fisicamente no disco.
🚀 Guia de Execução
- No seu
Cargo.toml, adicione:clap = { version = "4.0", features = ["derive"] }. - Implementação sugerida:
use clap::{Parser, Subcommand}; use std::fs::{OpenOptions, read_to_string}; use std::io::Write; #[derive(Parser)] struct Cli { #[command(subcommand)] comando: Comandos, } #[derive(Subcommand)] enum Comandos { Add { tarefa: String }, List, } fn main() { let cli = Cli::parse(); match cli.comando { Comandos::Add { tarefa } => { let mut arquivo = OpenOptions::new() .append(true) .create(true) .open("tarefas.txt") .unwrap(); writeln!(arquivo, "{}", tarefa).unwrap(); println!("Tarefa adicionada!"); } Comandos::List => { let conteudo = read_to_string("tarefas.txt").unwrap_or_default(); for (i, linha) in conteudo.lines().enumerate() { println!("{}: {}", i + 1, linha); } } } }
✅ Critérios de Aceite
- [ ] O projeto utiliza a crate
clapcom macros de derivação. - [ ] As tarefas persistem após o encerramento do programa.
- [ ] O menu de
--helpé gerado automaticamente e está em português (via configurações do clap).