67 lines
2.1 KiB
Bash
Executable File
67 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
TMP_DIR="$(mktemp -d)"
|
|
MOCK_GANTT_DIR="$TMP_DIR/gantt-board"
|
|
MOCK_LOG="$TMP_DIR/delegation.log"
|
|
|
|
cleanup() {
|
|
rm -rf "$TMP_DIR"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
mkdir -p "$MOCK_GANTT_DIR/scripts"
|
|
touch "$MOCK_LOG"
|
|
|
|
cat > "$MOCK_GANTT_DIR/scripts/task.sh" <<'MOCK_TASK'
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
echo "task.sh $*" >> "${MOCK_DELEGATION_LOG:?}"
|
|
MOCK_TASK
|
|
|
|
cat > "$MOCK_GANTT_DIR/scripts/project.sh" <<'MOCK_PROJECT'
|
|
#!/bin/bash
|
|
set -euo pipefail
|
|
echo "project.sh $*" >> "${MOCK_DELEGATION_LOG:?}"
|
|
MOCK_PROJECT
|
|
|
|
chmod +x "$MOCK_GANTT_DIR/scripts/task.sh" "$MOCK_GANTT_DIR/scripts/project.sh"
|
|
|
|
export MOCK_DELEGATION_LOG="$MOCK_LOG"
|
|
export GANTT_BOARD_DIR="$MOCK_GANTT_DIR"
|
|
|
|
bash "$ROOT_DIR/scripts/task.sh" list --json
|
|
bash "$ROOT_DIR/scripts/project.sh" create --name "Demo"
|
|
TASK_ID="65bc8c5a-212a-4532-a027-ea424e62900e" \
|
|
TASK_STATUS="review" \
|
|
node "$ROOT_DIR/scripts/update-task-status.js"
|
|
|
|
if ! grep -F "task.sh list --json" "$MOCK_LOG" >/dev/null 2>&1; then
|
|
echo "Expected task wrapper to delegate to gantt-board task.sh" >&2
|
|
cat "$MOCK_LOG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! grep -F "project.sh create --name Demo" "$MOCK_LOG" >/dev/null 2>&1; then
|
|
echo "Expected project wrapper to delegate to gantt-board project.sh" >&2
|
|
cat "$MOCK_LOG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if ! grep -F "task.sh update 65bc8c5a-212a-4532-a027-ea424e62900e --status review" "$MOCK_LOG" >/dev/null 2>&1; then
|
|
echo "Expected update-task-status.js to delegate to gantt-board task.sh update" >&2
|
|
cat "$MOCK_LOG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
# No direct database credentials/queries in scripts
|
|
if rg -n --glob '!scripts/tests/*' "SUPABASE_SERVICE_ROLE_KEY|createClient\\(|rest/v1|from\\('tasks'\\)|from\\(\"tasks\"\\)" "$ROOT_DIR/scripts" >/dev/null 2>&1; then
|
|
echo "Direct DB references found under scripts/. CLI must remain API passthrough only." >&2
|
|
rg -n --glob '!scripts/tests/*' "SUPABASE_SERVICE_ROLE_KEY|createClient\\(|rest/v1|from\\('tasks'\\)|from\\(\"tasks\"\\)" "$ROOT_DIR/scripts" >&2 || true
|
|
exit 1
|
|
fi
|
|
|
|
echo "reuse-gantt-cli-contract: OK"
|