Adds qt migration example
This commit is contained in:
1 parent
e8488dd40e
commit
044885dddb
19 files changed
+1294
-2
No files matched your search
Executable
+149
@@ -0,0 +1,149 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
red() { printf "\033[31m%s\033[0m\n" "$*"; }
|
||||
green() { printf "\033[32m%s\033[0m\n" "$*"; }
|
||||
yellow() { printf "\033[33m%s\033[0m\n" "$*"; }
|
||||
blue() { printf "\033[34m%s\033[0m\n" "$*"; }
|
||||
|
||||
fail() {
|
||||
red "FEHLER: $*"
|
||||
exit 1
|
||||
}
|
||||
|
||||
check_cmd() {
|
||||
command -v "$1" >/dev/null 2>&1 || fail "'$1' nicht gefunden"
|
||||
}
|
||||
|
||||
mask() {
|
||||
local s="${1:-}"
|
||||
local n=${#s}
|
||||
if [ "$n" -le 8 ]; then
|
||||
printf '********'
|
||||
else
|
||||
printf '%s****%s' "${s:0:4}" "${s: -4}"
|
||||
fi
|
||||
}
|
||||
|
||||
check_env() {
|
||||
[ -n "${COPILOT_PROVIDER_TYPE:-}" ] || fail "COPILOT_PROVIDER_TYPE fehlt"
|
||||
[ -n "${COPILOT_PROVIDER_API_KEY:-}" ] || fail "COPILOT_PROVIDER_API_KEY fehlt"
|
||||
[ -n "${COPILOT_PROVIDER_BASE_URL:-}" ] || fail "COPILOT_PROVIDER_BASE_URL fehlt"
|
||||
[ -n "${COPILOT_MODEL:-}" ] || fail "COPILOT_MODEL fehlt"
|
||||
}
|
||||
|
||||
print_env_summary() {
|
||||
blue "== Konfiguration =="
|
||||
echo "Provider : ${COPILOT_PROVIDER_TYPE}"
|
||||
echo "Base URL : ${COPILOT_PROVIDER_BASE_URL}"
|
||||
echo "Modell : ${COPILOT_MODEL}"
|
||||
echo "API Key : $(mask "${COPILOT_PROVIDER_API_KEY}")"
|
||||
echo
|
||||
}
|
||||
|
||||
probe_models() {
|
||||
blue "== Prüfe Models-Endpoint =="
|
||||
local models_url="${COPILOT_PROVIDER_BASE_URL%/}/models"
|
||||
|
||||
local http_code
|
||||
http_code="$(curl -sS -o /tmp/copilot_models_probe.json \
|
||||
-w "%{http_code}" \
|
||||
-H "Authorization: Bearer ${COPILOT_PROVIDER_API_KEY}" \
|
||||
"$models_url" || true)"
|
||||
|
||||
echo "GET $models_url"
|
||||
echo "HTTP $http_code"
|
||||
|
||||
if [ "$http_code" = "200" ]; then
|
||||
green "Models-Endpoint erreichbar"
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
echo
|
||||
yellow "Gefundene Modelle (erste 20):"
|
||||
jq -r '
|
||||
if .data then .data[]?.id
|
||||
elif type=="array" then .[]?.id
|
||||
else empty end
|
||||
' /tmp/copilot_models_probe.json | head -20
|
||||
echo
|
||||
if jq -e --arg model "${COPILOT_MODEL}" '
|
||||
if .data then any(.data[]?; .id == $model)
|
||||
elif type=="array" then any(.[]?; .id == $model)
|
||||
else false end
|
||||
' /tmp/copilot_models_probe.json >/dev/null 2>&1; then
|
||||
green "Modell '${COPILOT_MODEL}' im Models-Endpoint gefunden"
|
||||
else
|
||||
yellow "Modell '${COPILOT_MODEL}' nicht eindeutig im Models-Endpoint gefunden"
|
||||
fi
|
||||
else
|
||||
yellow "jq nicht installiert; JSON-Antwort nicht geparst"
|
||||
fi
|
||||
else
|
||||
red "Models-Endpoint nicht erfolgreich erreichbar"
|
||||
echo
|
||||
sed -n '1,120p' /tmp/copilot_models_probe.json || true
|
||||
echo
|
||||
fi
|
||||
}
|
||||
|
||||
probe_chat() {
|
||||
blue "== Prüfe Chat-Completions minimal =="
|
||||
local chat_url="${COPILOT_PROVIDER_BASE_URL%/}/chat/completions"
|
||||
|
||||
cat >/tmp/copilot_chat_probe.json <<JSON
|
||||
{
|
||||
"model": "${COPILOT_MODEL}",
|
||||
"messages": [
|
||||
{ "role": "user", "content": "Reply with exactly: OK" }
|
||||
],
|
||||
"stream": false
|
||||
}
|
||||
JSON
|
||||
|
||||
local http_code
|
||||
http_code="$(curl -sS -o /tmp/copilot_chat_probe_response.json \
|
||||
-w "%{http_code}" \
|
||||
-H "Authorization: Bearer ${COPILOT_PROVIDER_API_KEY}" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d @/tmp/copilot_chat_probe.json \
|
||||
"$chat_url" || true)"
|
||||
|
||||
echo "POST $chat_url"
|
||||
echo "HTTP $http_code"
|
||||
|
||||
if [ "$http_code" = "200" ]; then
|
||||
green "Chat-Completions funktioniert"
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
echo
|
||||
yellow "Antwortauszug:"
|
||||
jq -r '.choices[0].message.content // .choices[0].delta.content // "keine textantwort gefunden"' \
|
||||
/tmp/copilot_chat_probe_response.json
|
||||
echo
|
||||
else
|
||||
sed -n '1,80p' /tmp/copilot_chat_probe_response.json || true
|
||||
fi
|
||||
else
|
||||
red "Chat-Completions fehlgeschlagen"
|
||||
echo
|
||||
sed -n '1,160p' /tmp/copilot_chat_probe_response.json || true
|
||||
echo
|
||||
fi
|
||||
}
|
||||
|
||||
run_copilot() {
|
||||
blue "== Starte Copilot CLI =="
|
||||
exec copilot "$@"
|
||||
}
|
||||
|
||||
main() {
|
||||
check_cmd curl
|
||||
check_cmd copilot
|
||||
check_env
|
||||
print_env_summary
|
||||
probe_models
|
||||
echo
|
||||
probe_chat
|
||||
echo
|
||||
run_copilot "$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
Reference in new issue
Block a user