shiki-cli 0.4.1

shiki: CLI + TUI entrypoint
use anyhow::Result;
use shiki_core::NotebookStore;

pub fn create(store: &NotebookStore, name: &str) -> Result<()> {
    let nb = store.create(name)?;
    println!("notebook created: {}", nb.path.display());
    Ok(())
}

pub fn list(store: &NotebookStore) -> Result<()> {
    let notebooks = store.list()?;
    if notebooks.is_empty() {
        println!("(no notebooks)");
        return Ok(());
    }
    for nb in notebooks {
        let count = nb.list_notes().map(|n| n.len()).unwrap_or(0);
        println!("{}  ({count} notes)", nb.name);
    }
    Ok(())
}

pub fn rename(store: &NotebookStore, old: &str, new: &str) -> Result<()> {
    let nb = store.rename(old, new)?;
    println!("renamed to: {}", nb.path.display());
    Ok(())
}