sara-tasks 2.7.6

Sara — folder-aware task manager
use std::path::Path;

use crate::commands::shared::plural;
use anyhow::{Context, Result};

pub(super) fn emit(output: Option<&Path>, blob: &str, root_id: i64, extra: usize) -> Result<()> {
    match output {
        Some(path) => {
            std::fs::write(path, format!("{blob}\n"))
                .with_context(|| format!("writing blob to {}", path.display()))?;
            let dep_note = if extra > 0 {
                format!(" (+{extra} dependency task{})", plural(extra))
            } else {
                String::new()
            };
            eprintln!("Exported task {root_id}{dep_note} to {}", path.display());
        }
        None => {
            println!("{blob}");
            if extra > 0 {
                eprintln!(
                    "Exported task {root_id} with {extra} dependency task{}. Import with `sara import`.",
                    plural(extra)
                );
            } else {
                eprintln!("Exported task {root_id}. Import with `sara import`.");
            }
        }
    }
    Ok(())
}