#!/bin/bash set -e ARGS=("${@-}") TMP_FILE="/tmp/aicommit" system=$( cat - <<EOF You are an expert programmer that values clear, unambiguous communication and are specialized in generating concise and informative git commit messages. Only reply with the commit message and nothing else. Give detail for every change in the diff. EOF ) pushd "$(pwd)" >/dev/null || exit 1 if [[ -z ${GROQ_API_KEY} ]]; then echo "API key not set." exit 1 fi if ! diff=$(git diff --cached); then echo "Failed to get diff." exit 1 fi message=$( jq -n \ ".messages = [{role: \"system\", content: $(jq -R -s '@json' <<<"${system}")}, {role: \"user\", content: $(jq -R -s '@json' <<<"${diff}")}] | .model = \"llama-3.1-70b-versatile\" | .temperature = 1 | .max_tokens = 1024 | .top_p = 1 | .stream = false | .stop = null" ) # trunk-ignore(shellcheck/SC2312) curl -s "https://api.groq.com/openai/v1/chat/completions" \ -X POST \ -H "Content-Type: application/json" \ -H "Authorization: Bearer ${GROQ_API_KEY}" \ -d "${message}" | jq -r '.choices[0].message.content | gsub("\""; "")' >"${TMP_FILE}" if [[ 0 -ne $? ]]; then echo "Failed to get response." exit 1 fi git commit -e -m "$(cat ${TMP_FILE})" && rm ${TMP_FILE} popd >/dev/null || exit 1