From a6678f3c195b3eae1e1c977f2b4c418e48c404c5 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 14 Jan 2026 15:52:49 +0100 Subject: Implement the 'ls' command for exercises MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It was the only part missing for exercises, which was even listed in -h/--help. Signed-off-by: Miquel Sabaté Solà --- crates/cli/src/exercises.rs | 17 +++++++++++++++++ crates/cli/src/main.rs | 1 + 2 files changed, 18 insertions(+) (limited to 'crates') diff --git a/crates/cli/src/exercises.rs b/crates/cli/src/exercises.rs index 518f604..39af6c3 100644 --- a/crates/cli/src/exercises.rs +++ b/crates/cli/src/exercises.rs @@ -172,6 +172,20 @@ fn edit(mut args: IntoIter) -> i32 { } } +fn ls(mut args: IntoIter) -> i32 { + if args.len() > 1 { + help(Some("error: exercises: too many filters")); + return 1; + } + + let exercises = mihi::select_by_title(args.next()).unwrap_or(vec![]); + for exe in exercises { + println!("- '{}'", exe); + } + + 0 +} + fn rm(mut args: IntoIter) -> i32 { if args.len() > 1 { help(Some("error: exercises: too many filters")); @@ -232,6 +246,9 @@ pub fn run(args: Vec) { "edit" => { std::process::exit(edit(it)); } + "ls" => { + std::process::exit(ls(it)); + } "rm" => { std::process::exit(rm(it)); } diff --git a/crates/cli/src/main.rs b/crates/cli/src/main.rs index 62ffd45..871490a 100644 --- a/crates/cli/src/main.rs +++ b/crates/cli/src/main.rs @@ -18,6 +18,7 @@ fn help() { println!(" -v, --version\tPrint the version of this program.\n"); println!("Commands:"); + println!(" exercises\t\tManage the exercises for this application."); println!(" init\t\t\tInitialize the configuration for this application."); println!(" nuke\t\t\tRemove all files from this application and its database."); println!(" practice\t\tPractice vocabulary/exercises. Default command if none was given."); -- cgit v1.2.3