localsmesh raw

   1  #!/bin/bash
   2  # Launch a clean local smesh stack: relay + LibreWolf with signer extension.
   3  set -euo pipefail
   4  
   5  SMESH_ROOT="$(cd "$(dirname "$0")" && pwd)"
   6  XPI="$SMESH_ROOT/dist/smesh-signer.xpi"
   7  PROFILE="$HOME/.librewolf/smesh-dev"
   8  URL="${1:-http://127.0.0.1:3334}"
   9  RELAY="$SMESH_ROOT/smesh"
  10  RELAY_PID=""
  11  
  12  cleanup() {
  13      [ -n "$RELAY_PID" ] && kill "$RELAY_PID" 2>/dev/null || true
  14  }
  15  trap cleanup EXIT
  16  
  17  # Always rebuild XPI (extension code may have changed).
  18  mkdir -p "$SMESH_ROOT/dist"
  19  (cd "$SMESH_ROOT/web/ext" && zip -r "$XPI" .)
  20  
  21  # Kill existing LibreWolf and relay.
  22  pkill -f librewolf 2>/dev/null && sleep 1 || true
  23  pkill -f "$RELAY" 2>/dev/null && sleep 1 || true
  24  
  25  # Start the relay (from project root so relative paths work).
  26  cd "$SMESH_ROOT"
  27  if [ -x "$RELAY" ]; then
  28      echo "starting relay..."
  29      "$RELAY" &
  30      RELAY_PID=$!
  31      sleep 2
  32      if ! kill -0 "$RELAY_PID" 2>/dev/null; then
  33          echo "relay failed to start"
  34          exit 1
  35      fi
  36      echo "relay running (pid $RELAY_PID)"
  37  else
  38      echo "warning: relay binary not found at $RELAY, skipping"
  39  fi
  40  
  41  # Wipe and recreate the dev profile.
  42  rm -rf "$PROFILE"
  43  mkdir -p "$PROFILE/extensions"
  44  
  45  # Prefs: unsigned extensions, no whitelist gate, console logging.
  46  cat > "$PROFILE/user.js" <<'PREFS'
  47  user_pref("xpinstall.signatures.required", false);
  48  user_pref("extensions.autoDisableScopes", 0);
  49  user_pref("xpinstall.whitelist.required", false);
  50  user_pref("devtools.console.stdout.content", true);
  51  user_pref("privacy.resistFingerprinting", false);
  52  user_pref("ui.systemUsesDarkTheme", 1);
  53  user_pref("layout.css.prefers-color-scheme.content-override", 0);
  54  PREFS
  55  
  56  # Install the signer extension.
  57  cp "$XPI" "$PROFILE/extensions/signer@smesh.lol.xpi"
  58  
  59  echo "profile: $PROFILE"
  60  librewolf -profile "$PROFILE" "$URL"
  61  
  62  # When browser exits, cleanup kills the relay via trap.
  63