diff options
| -rw-r--r-- | scripts/deckdebug.sh | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/scripts/deckdebug.sh b/scripts/deckdebug.sh new file mode 100644 index 00000000..56f4c5b9 --- /dev/null +++ b/scripts/deckdebug.sh @@ -0,0 +1,44 @@ +#! /usr/bin/env bash +# Usage: deckdebug.sh DECKIP:8081 +# Dependencies: websocat jq curl chromium + +# https://jackson.dev/post/a-portable-nix-shell-shebang/ +if [ -z "$INSIDE_NIX_RANDOMSTRING" ] && command -v nix &> /dev/null; then + # If the user has nix, relaunch in nix shell with dependencies added + INSIDE_NIX_RANDOMSTRING=1 nix shell \ + nixpkgs#websocat \ + nixpkgs#jq \ + nixpkgs#curl \ + --command "$0" "$@" + exit $? +fi + +chromium --remote-debugging-port=9222 & +sleep 2 + +ADDR=$1 + +LOCAL=localhost:9222 +LOCALTARGETS=$(curl -s http://$LOCAL/json/list) +LOCALTARGET=$(jq -r '.[] | select(.title=="New Tab") | .id' <<< "$LOCALTARGETS") +echo startup tab $LOCALTARGET + +TARGET=0 +while :; do + NEWTARGET=$(curl -s http://$ADDR/json/list | jq -r '.[] | select(.title=="SharedJSContext") | .id') + + if [[ $NEWTARGET != "" ]] && [[ $NEWTARGET != $TARGET ]]; then + echo found new tab at $NEWTARGET + TARGET=$NEWTARGET + TARGETURL="devtools://devtools/bundled/inspector.html?remoteFrontend=true&ws=$ADDR/devtools/page/$TARGET" + + LOCALTARGET=$(echo '{"id": 1, "method": "Target.createTarget", "params": {"background": true, "url": "'$TARGETURL'"}} +{"id": 2, "method": "Target.closeTarget", "params": {"targetId": "'$LOCALTARGET'"}}' \ + | websocat ws://$LOCAL/devtools/page/$LOCALTARGET \ + | jq -r '.result.targetId') + + echo started devtools at $LOCALTARGET + fi + + sleep 5 +done
\ No newline at end of file |
