diff --git a/resources/win32/bin/code.sh b/resources/win32/bin/code.sh index eaef0759a87..591c79635ee 100644 --- a/resources/win32/bin/code.sh +++ b/resources/win32/bin/code.sh @@ -2,28 +2,30 @@ # # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. +COMMIT="@@COMMIT@@" +APP_NAME="@@APPNAME@@" -NAME="@@NAME@@" -VSCODE_PATH="$(dirname "$(dirname "$(realpath "$0")")")" -ELECTRON="$VSCODE_PATH/$NAME.exe" -if grep -q Microsoft /proc/version; then - if [ -x /bin/wslpath ]; then - # On recent WSL builds, we just need to set WSLENV so that - # ELECTRON_RUN_AS_NODE is visible to the win32 process - export WSLENV=ELECTRON_RUN_AS_NODE/w:$WSLENV - CLI=$(wslpath -m "$VSCODE_PATH/resources/app/out/cli.js") - else - # If running under older WSL, don't pass cli.js to Electron as - # 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" "$@" +set -e + +if grep -qi Microsoft /proc/version; then + # in a wsl shell + WIN_CODE_CMD=$(wslpath -w "$(dirname "$(realpath "$0")")/$APP_NAME.cmd") + + WSL_EXT_ID="ms-vscode.remote-wsl" + WSL_EXT_WLOC=$(cmd.exe /c "$WIN_CODE_CMD" --locate-extension $WSL_EXT_ID) + if ! [ -z "$WSL_EXT_WLOC" ]; then + # replace \r\n with \n in WSL_EXT_WLOC, get linux path for + WSL_CODE=$(wslpath -u "${WSL_EXT_WLOC%%[[:cntrl:]]}")/scripts/wslCode.sh + $WSL_CODE $COMMIT "$WIN_CODE_CMD" "$APP_NAME" "$@" exit $? fi -elif [ -x "$(command -v cygpath)" ]; then +fi + +if [ -x "$(command -v cygpath)" ]; then CLI=$(cygpath -m "$VSCODE_PATH/resources/app/out/cli.js") else CLI="$VSCODE_PATH/resources/app/out/cli.js" fi +ELECTRON="$VSCODE_PATH/$NAME.exe" ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@" -exit $? +exit $? \ No newline at end of file