use anyhow::Result;
use std::path::{Path, PathBuf};
use crate::environment::Environment;
pub use self::manifest::CLAUDE_ADAPTER_VERSION;
mod commands;
mod context_generation;
mod manifest;
mod paths;
mod session_scripts;
pub fn init_project(
project_path: &Path,
project_name: &str,
environment: &Environment,
) -> Result<()> {
paths::create_directory_structure(project_path)?;
session_scripts::create_session_scripts(project_path)?;
context_generation::generate_initial_context(project_path, project_name, environment)?;
manifest::create_adapter_manifest(project_path)?;
Ok(())
}
pub fn post_init(_project_path: &Path) -> Result<()> {
Ok(())
}
pub fn get_context_file_path(project_path: &Path) -> PathBuf {
paths::get_context_file_path(project_path)
}
pub fn get_sessions_path(project_path: &Path) -> PathBuf {
paths::get_sessions_path(project_path)
}
pub fn check_for_updates(project_path: &Path) -> Result<Option<(String, String)>> {
manifest::check_for_updates(project_path)
}
pub fn update_adapter_files(project_path: &Path) -> Result<()> {
session_scripts::create_session_scripts(project_path)?;
manifest::create_adapter_manifest(project_path)?;
Ok(())
}
pub fn get_version_changes(version: &str) -> Option<Vec<String>> {
manifest::get_version_changes(version)
}
pub fn get_changelog_since(from_version: &str) -> Vec<String> {
manifest::get_changelog_since(from_version)
}