a73x

tools/isolated-run.sh

Ref:   Size: 870 B   History

#!/bin/sh
# A short runtime path fits the unix-socket limit on both supported OSes.
set -eu
[ "$#" -ge 2 ] || { echo 'usage: isolated-run.sh PATH_TO_MUX COMMAND [ARG ...]' >&2; exit 2; }
CDPATH=
export CDPATH
MUX=$(cd -- "$(dirname -- "$1")" && pwd)/$(basename -- "$1")
[ -x "$MUX" ] || { echo "isolated-run: not executable: $MUX" >&2; exit 2; }
shift
scratch=$(mktemp -d /tmp/mux-rig.XXXXXX)
XDG_STATE_HOME="$scratch/state"
XDG_RUNTIME_DIR="$scratch/run"
XDG_CONFIG_HOME="$scratch/config"
XDG_CACHE_HOME="$scratch/cache"
export MUX XDG_STATE_HOME XDG_RUNTIME_DIR XDG_CONFIG_HOME XDG_CACHE_HOME
cleanup() {
    result=$?
    trap - EXIT
    "$MUX" d stop >/dev/null 2>&1 || :
    rm -rf "$scratch"
    exit "$result"
}
trap cleanup EXIT
trap 'exit 130' INT
trap 'exit 143' TERM
mkdir -m 700 "$XDG_STATE_HOME" "$XDG_RUNTIME_DIR" "$XDG_CONFIG_HOME" "$XDG_CACHE_HOME"
"$@"