58 lines
1.4 KiB
Bash
58 lines
1.4 KiB
Bash
|
set -euo pipefail
|
||
|
|
||
|
source install/_lib.sh
|
||
|
|
||
|
_ORIGIN=$(pwd)
|
||
|
|
||
|
rm -rf /tmp/sentry-self-hosted-test-sandbox.*
|
||
|
_SANDBOX="$(mktemp -d /tmp/sentry-self-hosted-test-sandbox.XXX)"
|
||
|
|
||
|
source install/detect-platform.sh
|
||
|
docker build -t sentry-self-hosted-jq-local --platform="$DOCKER_PLATFORM" jq
|
||
|
|
||
|
report_success() {
|
||
|
echo "$(basename $0) - Success 👍"
|
||
|
}
|
||
|
|
||
|
teardown() {
|
||
|
test "${DEBUG:-}" || rm -rf "$_SANDBOX"
|
||
|
cd "$_ORIGIN"
|
||
|
}
|
||
|
|
||
|
setup() {
|
||
|
# Clone the local repo into a temp dir. FWIW `git clone --local` breaks for
|
||
|
# me because it depends on hard-linking, which doesn't work across devices,
|
||
|
# and I happen to have my workspace and /tmp on separate devices.
|
||
|
git -c advice.detachedHead=false clone --depth=1 "file://$_ORIGIN" "$_SANDBOX"
|
||
|
|
||
|
# Now propagate any local changes from the working copy to the sandbox. This
|
||
|
# provides a pretty nice dev experience: edit the files in the working copy,
|
||
|
# then run `DEBUG=1 some-test.sh` to leave the sandbox up for interactive
|
||
|
# dev/debugging.
|
||
|
git status --porcelain | while read line; do
|
||
|
# $line here is something like `M some-script.sh`.
|
||
|
|
||
|
local filepath="$(cut -f2 -d' ' <(echo $line))"
|
||
|
local filestatus="$(cut -f1 -d' ' <(echo $line))"
|
||
|
|
||
|
case $filestatus in
|
||
|
D)
|
||
|
rm "$_SANDBOX/$filepath"
|
||
|
;;
|
||
|
A | M | AM | ??)
|
||
|
ln -sf "$(realpath $filepath)" "$_SANDBOX/$filepath"
|
||
|
;;
|
||
|
**)
|
||
|
echo "Wuh? $line"
|
||
|
exit 77
|
||
|
;;
|
||
|
esac
|
||
|
done
|
||
|
|
||
|
cd "$_SANDBOX"
|
||
|
|
||
|
trap teardown EXIT
|
||
|
}
|
||
|
|
||
|
setup
|