mod internal;
use anyhow::Result;
use std::path::Path;
#[derive(Debug, Clone, clap::Subcommand)]
pub enum SessionCommands {
Start {
title: String,
#[arg(long)]
adapter: Option<String>,
},
Update,
Note {
content: String,
},
End,
}
pub fn execute(command: SessionCommands) -> Result<()> {
let project_root = std::env::current_dir()?;
match command {
SessionCommands::Start { title, adapter } => {
start(&project_root, &title, adapter.as_deref())
}
SessionCommands::Update => update(&project_root),
SessionCommands::Note { content } => note(&project_root, &content),
SessionCommands::End => end(&project_root),
}
}
pub fn start(project_root: &Path, title: &str, adapter: Option<&str>) -> Result<()> {
internal::start_session(project_root, title, adapter)
}
pub fn update(project_root: &Path) -> Result<()> {
internal::update_session(project_root)
}
pub fn note(project_root: &Path, content: &str) -> Result<()> {
internal::note_session(project_root, content)
}
pub fn end(project_root: &Path) -> Result<()> {
internal::end_session(project_root)
}