autocommit-rs 0.1.0

Tool that generates conventional commits from staged changes and executes the commit in one go.
mod gemini;
mod openai;
pub(crate) mod prompts;

use crate::types::{CommitType, MessageStyle, ModelType};

pub struct GenerateOptions<'a> {
    pub diff: &'a str,
    pub commit_type: Option<CommitType>,
    pub files: &'a [String],
    pub branch_name: &'a str,
    pub message_style: MessageStyle,
}

pub async fn generate_commit_message(
    model: ModelType,
    options: GenerateOptions<'_>,
) -> anyhow::Result<String> {
    match model {
        ModelType::Gemini => {
            self::gemini::generate_commit_message(
                options.diff,
                options.commit_type,
                options.files,
                options.branch_name,
                options.message_style,
            )
            .await
        }
        ModelType::Openai => {
            self::openai::generate_commit_message(
                options.diff,
                options.commit_type,
                options.files,
                options.branch_name,
                options.message_style,
            )
            .await
        }
    }
}