enable CLI when invoked from WSL on modern (RS4) hosts

Fixes issue #39892

There's one minor gotchya: this script tests for a modern WSL release
(which supports the WSLENV feature) using the existence of
/bin/wslpath. Per https://docs.microsoft.com/en-us/windows/wsl/release-notes,
wslpath was added in build 17046 but WSLENV is only supported in
the subsequent build (17063). Both those builds were only shipped as
Windows insider builds, so this test should be safe enough.
This commit is contained in:
Andrew Baumann 2018-03-02 11:10:08 -08:00
parent 6f3575e264
commit 8505dcc469

View file

@ -7,14 +7,20 @@ NAME="@@NAME@@"
VSCODE_PATH="$(dirname "$(dirname "$(realpath "$0")")")" VSCODE_PATH="$(dirname "$(dirname "$(realpath "$0")")")"
ELECTRON="$VSCODE_PATH/$NAME.exe" ELECTRON="$VSCODE_PATH/$NAME.exe"
if grep -q Microsoft /proc/version; then if grep -q Microsoft /proc/version; then
# If running under WSL don't pass cli.js to Electron as environment vars if [ -x /bin/wslpath ]; then
# cannot be transferred from WSL to Windows # On recent WSL builds, we just need to set WSLENV so that
# See: https://github.com/Microsoft/BashOnWindows/issues/1363 # ELECTRON_RUN_AS_NODE is visible to the win32 process
# https://github.com/Microsoft/BashOnWindows/issues/1494 export WSLENV=ELECTRON_RUN_AS_NODE/w:$WSLENV
"$ELECTRON" "$@" CLI=$(wslpath -m "$VSCODE_PATH/resources/app/out/cli.js")
exit $? else
fi # If running under older WSL, don't pass cli.js to Electron as
if [ "$(expr substr $(uname -s) 1 9)" == "CYGWIN_NT" ]; then # environment vars cannot be transferred from WSL to Windows
# See: https://github.com/Microsoft/BashOnWindows/issues/1363
# https://github.com/Microsoft/BashOnWindows/issues/1494
"$ELECTRON" "$@"
exit $?
fi
elif [ "$(expr substr $(uname -s) 1 9)" == "CYGWIN_NT" ]; then
CLI=$(cygpath -m "$VSCODE_PATH/resources/app/out/cli.js") CLI=$(cygpath -m "$VSCODE_PATH/resources/app/out/cli.js")
else else
CLI="$VSCODE_PATH/resources/app/out/cli.js" CLI="$VSCODE_PATH/resources/app/out/cli.js"