43 lines
1.2 KiB
Bash
Executable File
43 lines
1.2 KiB
Bash
Executable File
#!/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
|
|
} |