sift_queue/cli/commands/
rm.rs1use crate::queue::Queue;
2use crate::RmArgs;
3use anyhow::Result;
4use std::path::PathBuf;
5
6pub fn execute(args: &RmArgs, queue_path: PathBuf) -> Result<i32> {
8 let queue = Queue::new(queue_path);
9
10 let id = match &args.id {
11 Some(ref id) => id.as_str(),
12 None => {
13 eprintln!("Error: Item ID is required");
14 return Ok(1);
15 }
16 };
17
18 match queue.remove(id)? {
19 Some(removed) => {
20 if args.json {
21 let json = serde_json::to_string_pretty(&removed.to_json_value())?;
22 println!("{}", json);
23 } else {
24 println!("{}", removed.id);
25 eprintln!("Removed item {}", removed.id);
26 }
27 Ok(0)
28 }
29 None => {
30 eprintln!("Error: Item not found: {}", id);
31 Ok(1)
32 }
33 }
34}