anaxios
74909d05f4
Content: Changed system message to include detail about every change in the diff for better clarity and precision
79 lines
1.6 KiB
Bash
Executable File
79 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
ARGS=("${@-}")
|
|
|
|
TMP_FILE="/tmp/aicommit"
|
|
system="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."
|
|
|
|
pushd "$(pwd)" >/dev/null
|
|
|
|
hasFlag() {
|
|
local flags=("$@")
|
|
for var in "${ARGS[@]}"; do
|
|
for flag in "${flags[@]}"; do
|
|
if [[ ${flag} == "${var}" ]]; then
|
|
echo 'true'
|
|
return
|
|
fi
|
|
done
|
|
done
|
|
echo 'false'
|
|
}
|
|
|
|
spin() {
|
|
echo "${@}"
|
|
while true; do
|
|
spinner=('-' '\' '|' '/')
|
|
for i in "${spinner[@]}"; do
|
|
echo -ne "\r${i}"
|
|
sleep .05
|
|
done
|
|
done
|
|
echo ""
|
|
}
|
|
|
|
if ! diff=$(git diff --cached); then
|
|
echo "Failed to get diff."
|
|
exit 1
|
|
fi
|
|
|
|
message_cat="${system} diff: ${diff}"
|
|
|
|
message=$(
|
|
jq -n \
|
|
".message = $(jq -R -s '@json' <<<"${message_cat}")"
|
|
)
|
|
|
|
# trunk-ignore(shellcheck/SC2091)
|
|
# trunk-ignore(shellcheck/SC2310)
|
|
if $(hasFlag -r --reset); then
|
|
spin "resetting AI history." &
|
|
SPINNER="$!"
|
|
if ! curl -s -X POST https://infer.x64.world/reset-conversation >/dev/null; then
|
|
echo "Failed to reset conversation."
|
|
kill ${SPINNER}
|
|
exit 1
|
|
fi
|
|
kill "${SPINNER}"
|
|
fi
|
|
|
|
spin "AI is thinking." &
|
|
SPINNER="$!"
|
|
curl -s "https://infer.x64.world/chat" \
|
|
-X POST \
|
|
-H "Content-Type: application/json" \
|
|
-d "${message}" | jq -r '.content | gsub("\""; "")' >"${TMP_FILE}"
|
|
|
|
# trunk-ignore(shellcheck/SC2181)
|
|
if [[ 0 -ne $? ]]; then
|
|
kill "${SPINNER}"
|
|
echo "Failed to get response."
|
|
exit 1
|
|
fi
|
|
kill "${SPINNER}"
|
|
|
|
git commit -e -m "$(cat "${TMP_FILE}")" && rm "${TMP_FILE}"
|
|
|
|
popd >/dev/null
|