Something went wrong. Try again.
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455use doing_config::Config;use doing_ops::extract_note::extract_note;use doing_taskpaper::Note;
use crate::Result;
/// Resolve the title and note from command arguments.////// Handles editor input, inline note extraction, the `--note` flag, and/// interactive `--ask` prompts, combining all note sources into one.pub fn resolve_title_and_note( title_words: &[String], note_flag: Option<&str>, ask: bool, editor: bool, config: &Config,) -> Result<(String, Note)> { let raw_title = if editor { let content = crate::cli::editor::edit("", config)?; let title = content.lines().next().unwrap_or("").trim().to_string(); if title.is_empty() { return Err(crate::Error::Config("editor returned empty title".into())); } title } else { title_words.join(" ") };
let (title, extracted_note) = extract_note(&raw_title);
let asked_note = if ask { let input: String = dialoguer::Input::new() .with_prompt("Add a note") .allow_empty(true) .interact_text() .map_err(crate::cli::interactive::dialoguer_error)?; if input.is_empty() { None } else { Some(input) } } else { None };
let parts: Vec<&str> = [note_flag, extracted_note.as_deref(), asked_note.as_deref()] .into_iter() .flatten() .collect();
let note = if parts.is_empty() { Note::new() } else { Note::from_text(&parts.join("\n")) };
Ok((title, note))}