22set -euo pipefail
33
44SCRIPT_DIR=" $( cd -- " $( dirname -- " ${BASH_SOURCE[0]} " ) " && pwd) "
5- WORKSPACE_ROOT =" ${1:- $(git -C " ${SCRIPT_DIR} " rev-parse --show-toplevel)} "
5+ REQUEST_ROOT =" ${1:- $(git -C " ${SCRIPT_DIR} " rev-parse --show-toplevel)} "
66TMP_DIR=" $( mktemp -d) "
77trap ' rm -rf "${TMP_DIR}"' EXIT
88
9- DISCOVERY_TEXT=" ${TMP_DIR} /discovery.txt"
10- if ! rg -n --glob ' *.kt' ' ^\s*(class|object|interface)\s+[A-Za-z_][A-Za-z0-9_]*' \
11- " ${WORKSPACE_ROOT} " > " ${DISCOVERY_TEXT} " ; then
12- python3 - " ${DISCOVERY_TEXT} " << 'PY '
13- import json
14- import sys
15- from pathlib import Path
9+ WORKSPACE_ROOT=" ${TMP_DIR} /workspace"
10+ mkdir -p " ${WORKSPACE_ROOT} /src/main/kotlin/sample"
1611
17- log_path = Path(sys.argv[1])
18- payload = {
19- "ok": False,
20- "stage": "discovery",
21- "message": "Could not discover a Kotlin class, object, or interface in the workspace.",
22- "log_file": str(log_path),
23- }
24- print(json.dumps(payload, indent=2))
25- PY
26- exit 1
27- fi
12+ cat > " ${WORKSPACE_ROOT} /src/main/kotlin/sample/Greeter.kt" << 'EOF '
13+ package sample
2814
29- read -r SAMPLE_SYMBOL SAMPLE_FILE <<< " $(
30- python3 - " ${DISCOVERY_TEXT} " <<'PY'
31- import re
32- import sys
33- from pathlib import Path
15+ fun greet(name: String): String = "hi $name"
16+ EOF
3417
35- pattern = re.compile(r" ^(.*? ):\d +:\s * (? :class| object| interface)\s + ([A-Za-z_][A-Za-z0-9_]* )" )
36- for line in Path(sys.argv[1]).read_text(encoding=" utf-8" ).splitlines():
37- match = pattern.match(line)
38- if match:
39- print(match.group(2), match.group(1))
40- break
41- else:
42- raise SystemExit(" No sample symbol found in discovery output." )
43- PY
44- )"
18+ cat > " ${WORKSPACE_ROOT} /src/main/kotlin/sample/UseGreeter.kt" << 'EOF '
19+ package sample
20+
21+ fun greetTwice(): String = greet("kast") + greet("again")
22+ EOF
23+
24+ export KAST_SOURCE_ROOT=" ${REQUEST_ROOT} "
4525
26+ SAMPLE_SYMBOL=" greet"
27+ SAMPLE_FILE=" ${WORKSPACE_ROOT} /src/main/kotlin/sample/Greeter.kt"
4628MISSING_SYMBOL=" DefinitelyMissingSymbolForWrapperValidation"
4729SUCCESS_DIAGNOSTICS_FILE=" ${SAMPLE_FILE} "
4830FAILURE_DIAGNOSTICS_FILE=" ${WORKSPACE_ROOT} /definitely-missing-file.kt"
@@ -106,7 +88,7 @@ print(json.dumps(entry))
10688PY
10789done
10890
109- python3 - " ${RESULTS_FILE} " " ${WORKSPACE_ROOT} " " ${SAMPLE_SYMBOL} " " ${SAMPLE_FILE} " << 'PY '
91+ python3 - " ${RESULTS_FILE} " " ${REQUEST_ROOT} " " ${ WORKSPACE_ROOT}" " ${SAMPLE_SYMBOL} " " ${SAMPLE_FILE} " << 'PY '
11092import json
11193import sys
11294from pathlib import Path
@@ -115,9 +97,10 @@ results = [json.loads(line) for line in Path(sys.argv[1]).read_text(encoding="ut
11597ok = all(item.get("valid_json") and item.get("matches_expectation") for item in results)
11698payload = {
11799 "ok": ok,
118- "workspace_root": sys.argv[2],
119- "sample_symbol": sys.argv[3],
120- "sample_file": sys.argv[4],
100+ "request_root": sys.argv[2],
101+ "workspace_root": sys.argv[3],
102+ "sample_symbol": sys.argv[4],
103+ "sample_file": sys.argv[5],
121104 "checks": results,
122105}
123106print(json.dumps(payload, indent=2))
0 commit comments