lc-cli 0.1.3

LLM Client - A fast Rust-based LLM CLI tool with provider management and chat sessions
Documentation
//! Template management commands

use crate::cli::TemplateCommands;
use crate::config;
use anyhow::Result;
use colored::Colorize;

/// Handle template-related commands
pub async fn handle(command: TemplateCommands) -> Result<()> {
    match command {
        TemplateCommands::Add { name, prompt } => {
            let mut config = config::Config::load()?;
            config.add_template(name.clone(), prompt.clone())?;
            config.save()?;
            println!("{} Template '{}' added", "".green(), name);
        }
        TemplateCommands::Delete { name } => {
            let mut config = config::Config::load()?;
            config.remove_template(name.clone())?;
            config.save()?;
            println!("{} Template '{}' removed", "".green(), name);
        }
        TemplateCommands::List => {
            let config = config::Config::load()?;
            let templates = config.list_templates();

            if templates.is_empty() {
                println!("No templates configured.");
            } else {
                println!("\n{}", "Templates:".bold().blue());
                for (name, prompt) in templates {
                    let display_prompt = if prompt.len() > 60 {
                        format!("{}...", &prompt[..60])
                    } else {
                        prompt.clone()
                    };
                    println!("  {} {} -> {}", "".blue(), name.bold(), display_prompt);
                }
            }
        }
    }

    Ok(())
}