diff --git a/scripts/code.sh b/scripts/code.sh index 8035059f65cf2cd6c804314015a03f9201aa4bfe..ba4177c33e5f055551cd2e3e5d4aae389e554062 100755 --- a/scripts/code.sh +++ b/scripts/code.sh @@ -1,5 +1,7 @@ #!/usr/bin/env bash +set -e + if [[ "$OSTYPE" == "darwin"* ]]; then realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; } ROOT=$(dirname "$(dirname "$(realpath "$0")")") @@ -9,6 +11,9 @@ if [[ "$OSTYPE" == "darwin"* ]]; then export ELECTRON_ENABLE_LOGGING=1 else ROOT=$(dirname "$(dirname "$(readlink -f $0)")") + if grep -qi Microsoft /proc/version; then + IN_WSL=true + fi fi function code() { @@ -50,4 +55,23 @@ function code() { exec "$CODE" . "$@" } -code "$@" +function code-wsl() +{ + # in a wsl shell + local WIN_CODE_CLI_CMD=$(wslpath -w "$ROOT/scripts/code-cli.bat") + + local WSL_EXT_ID="ms-vscode.remote-wsl" + local WSL_EXT_WLOC=$(cmd.exe /c "$WIN_CODE_CLI_CMD" --locate-extension $WSL_EXT_ID) + if ! [ -z "$WSL_EXT_WLOC" ]; then + # replace \r\n with \n in WSL_EXT_WLOC + local WSL_CODE=$(wslpath -u "${WSL_EXT_WLOC%%[[:cntrl:]]}")/scripts/wslCode-dev.sh + $WSL_CODE "$ROOT" "$@" + exit $? + fi +} + +if [ -z ${IN_WSL+x} ]; then + code "$@" +else + code-wsl "$@" +fi \ No newline at end of file