-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdev
More file actions
executable file
·70 lines (63 loc) · 2.41 KB
/
Copy pathdev
File metadata and controls
executable file
·70 lines (63 loc) · 2.41 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
#!/usr/bin/env bash
# java-properties — Entwickler-Einstiegspunkt.
#
# Container-aware: Laeuft dieses Skript ausserhalb des Devcontainers, re-exect es
# sich selbst hinein. Laeuft es bereits im Container (DEVCONTAINER=true), fuehrt es
# den Befehl direkt aus. Damit ist `./dev <cmd>` ueberall derselbe Aufruf und es
# gibt keinen Weg, versehentlich nativ zu bauen.
#
# Hintergrund: ~/.claude/docs/project/research/devcontainer-architektur.md
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m'
usage() {
cat <<'USAGE'
java-properties Developer Commands
Usage: ./dev <command>
build Compile and package the jar, skipping tests (mvn package -DskipTests)
test Run the test suite (mvn test)
check test + the requirement <-> test chain (the gate CI mirrors)
usage Show this text
USAGE
}
if [ "${DEVCONTAINER:-}" != "true" ]; then
if [ $# -eq 0 ]; then
usage
exit 0
fi
echo -e "${YELLOW}-> Ausserhalb des Containers, fuehre im Devcontainer aus...${NC}" >&2
devcontainer up --workspace-folder . >/dev/null
exec devcontainer exec --workspace-folder . ./dev "$@"
fi
# --- Ab hier: wir sind im Container --------------------------------------------
# Bewusst `mvn` (das system-installierte, per apt in post-create.sh auf 3.8.7
# gepinnte Maven), nicht `./mvnw`: der Wrapper zieht sich Maven 3.9.9, dessen
# Default-Surefire (3.2.5) sich anders verhaelt als das System-Maven-Default
# (2.12.4) -- mit JUnit 5 waere das der Unterschied zwischen "laeuft" und
# "Tests run: 0, gruen". Mit JUnit 4 laufen zwar beide, aber nur eine der
# beiden Versionen ist tatsaechlich gegen dieses Repo geprueft.
case "${1:-}" in
build)
echo -e "${GREEN}Building (skip tests)...${NC}"
mvn -B -ntp package -DskipTests
;;
test)
echo -e "${GREEN}Testing...${NC}"
mvn -B -ntp test
;;
check)
echo -e "${GREEN}Full check (tests)...${NC}"
mvn -B -ntp test
# Prueft, dass jeder [impl->req~...] in *Test.java auf eine Anforderung
# unter docs/specs/ aufloest (Kette kaputt -> Exit 1) und dass die Pruefung
# selbst ueberhaupt gelaufen ist (Aufruf-/Selbstpruefungsfehler -> Exit 2,
# der gefaehrlichere Fall: ein Zweier hier hiesse "Pruefung lief nicht",
# nicht "Kette sauber"). `set -e` reicht beide Exit-Codes unveraendert nach
# aussen.
echo -e "${GREEN}Checking requirement <-> test chain...${NC}"
python3 bin/traceability/traceability.py --spec-root docs --source-root .
;;
*) usage ;;
esac