reopen.rs

 1use anyhow::Result;
 2use std::path::Path;
 3
 4use crate::db;
 5use crate::ops;
 6
 7pub fn run(root: &Path, ids: &[String], json: bool) -> Result<()> {
 8    let store = db::open(root)?;
 9
10    let mut reopened = Vec::new();
11    for raw in ids {
12        let id = db::resolve_task_id(&store, raw, false)?;
13        ops::reopen_task(&store, &id)?;
14        reopened.push(id);
15    }
16
17    if json {
18        let out: Vec<_> = reopened
19            .iter()
20            .map(|id| serde_json::json!({"id": id, "status": "open"}))
21            .collect();
22        println!("{}", serde_json::to_string(&out)?);
23    } else {
24        let c = crate::color::stdout_theme();
25        for id in &reopened {
26            println!("{}reopened{} {id}", c.green, c.reset);
27        }
28    }
29
30    Ok(())
31}