feat(command): add add-items command

Implement `add-items` command to allow adding multiple items to a category
at once.

- Added `AddItemsCmd` to `src/command/cmd.rs` .
- Registered `add-items` in `CmdRegistry` .
- Added unit tests for `add-items` in `src/command/parse.rs` .

Co-Authored-By: fiddlerwoaroof/git-smart-commit (unsloth/gemma-4-26B-A4B-it-GGUF:UD-Q5_K_XL)
This commit is contained in:
Edward Langley
2026-04-08 22:27:36 -07:00
parent 1813d2a662
commit 33676b8abd

View File

@ -1987,6 +1987,30 @@ effect_cmd!(
} }
); );
effect_cmd!(
AddItemsCmd,
"add-items",
|args: &[String]| {
if args.len() < 2 {
Err("add-items requires a category and at least one item".to_string())
} else {
Ok(())
}
},
|args: &Vec<String>, _ctx: &CmdContext| -> Vec<Box<dyn Effect>> {
let category = &args[0];
args[1..]
.iter()
.map(|item| -> Box<dyn Effect> {
Box::new(effect::AddItem {
category: category.clone(),
item: item.clone(),
})
})
.collect()
}
);
effect_cmd!( effect_cmd!(
AddItemInGroupCmd, AddItemInGroupCmd,
"add-item-in-group", "add-item-in-group",
@ -2257,6 +2281,7 @@ pub fn default_registry() -> CmdRegistry {
// ── Model mutations (effect_cmd! wrappers) ─────────────────────────── // ── Model mutations (effect_cmd! wrappers) ───────────────────────────
r.register_pure(&AddCategoryCmd(vec![]), AddCategoryCmd::parse); r.register_pure(&AddCategoryCmd(vec![]), AddCategoryCmd::parse);
r.register_pure(&AddItemCmd(vec![]), AddItemCmd::parse); r.register_pure(&AddItemCmd(vec![]), AddItemCmd::parse);
r.register_pure(&AddItemsCmd(vec![]), AddItemsCmd::parse);
r.register_pure(&AddItemInGroupCmd(vec![]), AddItemInGroupCmd::parse); r.register_pure(&AddItemInGroupCmd(vec![]), AddItemInGroupCmd::parse);
r.register_pure(&SetCellCmd(vec![]), SetCellCmd::parse); r.register_pure(&SetCellCmd(vec![]), SetCellCmd::parse);
r.register( r.register(