aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mssola@mssola.com>2026-01-14 15:52:49 +0100
committerMiquel Sabaté Solà <mssola@mssola.com>2026-01-14 15:52:49 +0100
commita6678f3c195b3eae1e1c977f2b4c418e48c404c5 (patch)
tree3e4e2eedf35713be39ce912d89b1efc5057bc37f
parentebe882a4997f74a741f4e1b730a4dc942cad36ea (diff)
downloadmihi-a6678f3c195b3eae1e1c977f2b4c418e48c404c5.tar.gz
mihi-a6678f3c195b3eae1e1c977f2b4c418e48c404c5.zip
Implement the 'ls' command for exercises
It was the only part missing for exercises, which was even listed in -h/--help. Signed-off-by: Miquel Sabaté Solà <mssola@mssola.com>
-rw-r--r--crates/cli/src/exercises.rs17
-rw-r--r--crates/cli/src/main.rs1
2 files changed, 18 insertions, 0 deletions
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<String>) -> i32 {
}
}
+fn ls(mut args: IntoIter<String>) -> 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<String>) -> i32 {
if args.len() > 1 {
help(Some("error: exercises: too many filters"));
@@ -232,6 +246,9 @@ pub fn run(args: Vec<String>) {
"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.");