#!/bin/bash function commit-with-llm() { mkdir -p tmp PROMPT_FILE="tmp/llm_update" echo -e "\nWrite prompt to $PROMPT_FILE." cat << EOF > "$PROMPT_FILE" Look at the git diff below and reply with a git commit message. Ensure that the commit message matches the conventional commits specification. If possible add a scope. Reply with the commit message only. $(git diff --staged) EOF # Run the llm command echo -e "Send prompt with staged git diff and wait for the response of the $LLM_MODEL LLM." RESULT=$(cat "$PROMPT_FILE" | llm -m "$LLM_MODEL") # Check if result is empty if [ -z "$RESULT" ]; then echo "No response from the model. Exiting." exit 1 fi # Save the result to a file RESULT_FILE="tmp/llm_update_result" echo "$RESULT" > "$RESULT_FILE" echo -e "Saved response to $RESULT_FILE.\n" # Show a preview of result file less "$RESULT_FILE" # Ask for confirmation before updating files read -p "Do you want to commit or edit before commit the message? (y/e/n): " CONFIRM if [[ ! "$CONFIRM" =~ ^[YyEe]$ ]]; then exit 0 fi git commit -m "$RESULT" if [[ "$CONFIRM" =~ ^[Ee]$ ]]; then git commit --amend fi }