Skip to main content

sift_queue/cli/commands/
show.rs

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