-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-ide-matrix-entrypoint.sh
More file actions
75 lines (61 loc) · 2.77 KB
/
Copy pathdocker-ide-matrix-entrypoint.sh
File metadata and controls
75 lines (61 loc) · 2.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env bash
set -euo pipefail
ide="${KORU_MATRIX_IDE:?KORU_MATRIX_IDE is required}"
system_id="${KORU_MATRIX_SYSTEM:-unknown}"
export KORU_AUTOPILOT_IDE="${ide}"
export KORU_AUTOPILOT_INSTANCE="${ide}"
export KORU_HEADLESS=1
export KORU_HEADLESS_ALLOW_AUTOPILOT=1
export KORU_INJECTOR_BACKEND="${KORU_INJECTOR_BACKEND:-wtype}"
export KORU_AUTOPILOT_ALLOW_KEYBOARD_FALLBACK=1
_DEFAULT_PLUGIN_VERSION="$(python -c 'from koruide.plugin_version import EXPECTED_VSCODE_PLUGIN_VERSION; print(EXPECTED_VSCODE_PLUGIN_VERSION)')"
export KORU_FAKE_EXTENSION_VERSION="${KORU_FAKE_EXTENSION_VERSION:-${_DEFAULT_PLUGIN_VERSION}}"
export TERM_PROGRAM="${TERM_PROGRAM:-vscode}"
export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/tmp/koru-runtime}"
mkdir -p "${XDG_RUNTIME_DIR}"
echo "koru docker ide matrix: system=${system_id} ide=${ide}"
python -m pytest tests/test_docker_ide_matrix.py -q
python -m koru.cli autopilot drive \
--direct \
--dry-run \
--no-submit \
--ide "${ide}" \
--prompt "koru docker matrix smoke: ${system_id}/${ide}" \
>/tmp/koru-drive-smoke.json
python - <<'PY'
from __future__ import annotations
import json
import os
from pathlib import Path
from koruide.socket import default_socket_path
ide = os.environ["KORU_MATRIX_IDE"]
system = os.environ.get("KORU_MATRIX_SYSTEM", "unknown")
payload = json.loads(Path("/tmp/koru-drive-smoke.json").read_text(encoding="utf-8"))
assert payload["dry_run"] is True, payload
assert payload["submitted"] is False, payload
assert payload["backend"] in {"wtype", "ydotool", "xdotool", "profile"}, payload
assert default_socket_path().name == f"koru-autopilot-{ide}.sock"
if ide == "vscodium":
assert os.environ.get("TERM_PROGRAM") == "vscode"
assert os.environ.get("KORU_AUTOPILOT_INSTANCE") == "vscodium"
assert default_socket_path().name == "koru-autopilot-vscodium.sock"
print(f"koru docker drive smoke verified: system={system} ide={ide}")
PY
if [[ "${ide}" == "vscode" || "${ide}" == "vscodium" || "${ide}" == "cursor" || "${ide}" == "windsurf" || "${ide}" == "jetbrains" ]]; then
python -m koru.cli autopilot manage --ide "${ide}" --format json >/tmp/koru-manage-smoke.json
python - <<'PY'
from __future__ import annotations
import json
import os
from pathlib import Path
from koruide.plugin_version import EXPECTED_VSCODE_PLUGIN_VERSION
payload = json.loads(Path("/tmp/koru-manage-smoke.json").read_text(encoding="utf-8"))
ide = os.environ["KORU_MATRIX_IDE"]
plugin = payload.get("plugin") or {}
assert plugin.get("ide") == ide, payload
assert plugin.get("installed_version") == EXPECTED_VSCODE_PLUGIN_VERSION, payload
assert payload.get("ok") is True, payload
print(f"koru docker plugin manager verified: ide={ide} version={EXPECTED_VSCODE_PLUGIN_VERSION}")
PY
fi
echo "koru docker ide matrix: ok system=${system_id} ide=${ide}"