Changed the shebang line from #!/bin/bash
to #!/usr/bin/env bash
.
Removed the `aicommit_groq` script and deleted the file. Updated the `EDITOR` command to use the `ARGS` array. Moved groq config into aicommit.
This commit is contained in:
parent
43b79b2914
commit
a271e5624e
41
aicommit
41
aicommit
@ -1,8 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
ARGS=("${@-}")
|
|
||||||
|
|
||||||
TMP_FILE="/tmp/aicommit_tmp"
|
TMP_FILE="/tmp/aicommit_tmp"
|
||||||
|
|
||||||
system=$(
|
system=$(
|
||||||
@ -10,7 +8,12 @@ system=$(
|
|||||||
|
|
||||||
You are an expert programmer that values clear, unambiguous communication and are specialized in generating concise and informative git commit messages.
|
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.
|
Only reply with the commit message and nothing else.
|
||||||
Give detail for every change in the diff.
|
Give description for every change.
|
||||||
|
Do not include quotes from the diff.
|
||||||
|
Description should not include a reason only a description.
|
||||||
|
Description should be one sentence per difference.
|
||||||
|
Do not include urls.
|
||||||
|
Do not include headings. for example: 'URLS:'
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
)
|
)
|
||||||
@ -20,6 +23,31 @@ if ! diff=$(git diff --cached); then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ "--groq" == "$1" ]]; then
|
||||||
|
shift
|
||||||
|
|
||||||
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
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
|
||||||
|
else
|
||||||
message_cat="${system} diff: ${diff}"
|
message_cat="${system} diff: ${diff}"
|
||||||
|
|
||||||
message=$(
|
message=$(
|
||||||
@ -44,10 +72,13 @@ if [[ 0 -ne $? ]]; then
|
|||||||
echo "Failed to get response."
|
echo "Failed to get response."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
cat ".git/COMMIT_EDITMSG" >>"${TMP_FILE}"
|
cat ".git/COMMIT_EDITMSG" >>"${TMP_FILE}"
|
||||||
cat "${TMP_FILE}" >".git/COMMIT_EDITMSG"
|
cat "${TMP_FILE}" >".git/COMMIT_EDITMSG"
|
||||||
|
|
||||||
rm "${TMP_FILE}"
|
rm "${TMP_FILE}"
|
||||||
|
|
||||||
"${EDITOR}" "$@"
|
ARGS=("${@-}")
|
||||||
|
|
||||||
|
"${EDITOR}" "${ARGS[@]}"
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
set -e
|
|
||||||
set -o pipefail
|
|
||||||
|
|
||||||
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
|
|
Loading…
Reference in New Issue
Block a user