Files
vscode/scripts/code.sh
T
roblourensandCopilot 3ead11d604 build: complete Cloud Sandbox setup without manual recovery (#340396)
* build: finish sandbox Node setup automatically (Written by Copilot)

Select the verified Node runtime on the sandbox existing executable PATH, continue native header setup under that runtime, and cache completion using the selected Node version rather than the old hook process version.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* test: cover unattended sandbox Node handoff (Written by Copilot)

Verify startup runs native preinstall under the selected executable and records success in the same invocation, without manual environment recovery.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* build: reuse container flags in cloud sandboxes (Written by Copilot)

Use the existing Chromium shared-memory workaround for Linux Cloud Sandbox launches. Live probes confirmed the 64 MB shared-memory mount fills during module loading and the existing flag restores the workbench without protocol changes.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-07 17:32:34 -07:00

95 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
if [[ "$OSTYPE" == "darwin"* ]]; then
realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; }
ROOT=$(dirname "$(dirname "$(realpath "$0")")")
else
ROOT=$(dirname "$(dirname "$(readlink -f $0)")")
# If the script is running in Docker using the WSL2 engine, powershell.exe won't exist
if grep -qi Microsoft /proc/version && type powershell.exe > /dev/null 2>&1; then
IN_WSL=true
fi
fi
function code() {
cd "$ROOT"
if [[ "$OSTYPE" == "darwin"* ]]; then
NAME=`node -p "require('./product.json').nameLong"`
EXE_NAME=`node -p "require('./product.json').nameShort"`
CODE="./.build/electron/$NAME.app/Contents/MacOS/$EXE_NAME"
else
NAME=`node -p "require('./product.json').applicationName"`
CODE=".build/electron/$NAME"
fi
# Get electron, compile, built-in extensions
if [[ -z "${VSCODE_SKIP_PRELAUNCH}" ]]; then
node build/lib/preLaunch.ts
fi
# Manage built-in extensions
if [[ "$1" == "--builtin" ]]; then
exec "$CODE" build/builtin
return
fi
# Configuration
export NODE_ENV=development
export VSCODE_DEV=1
export VSCODE_CLI=1
export ELECTRON_ENABLE_STACK_DUMPING=1
export ELECTRON_ENABLE_LOGGING=1
DISABLE_TEST_EXTENSION="--disable-extension=vscode.vscode-api-tests"
if [[ "$@" == *"--extensionTestsPath"* ]]; then
DISABLE_TEST_EXTENSION=""
fi
# Launch Code
exec "$CODE" . $DISABLE_TEST_EXTENSION "$@"
}
function code-wsl()
{
HOST_IP=$(echo "" | powershell.exe -noprofile -Command "& {(Get-NetIPAddress | Where-Object {\$_.InterfaceAlias -like '*WSL*' -and \$_.AddressFamily -eq 'IPv4'}).IPAddress | Write-Host -NoNewline}")
export DISPLAY="$HOST_IP:0"
# in a wsl shell
ELECTRON="$ROOT/.build/electron/Code - OSS.exe"
if [ -f "$ELECTRON" ]; then
local CWD=$(pwd)
cd $ROOT
export WSLENV=ELECTRON_RUN_AS_NODE/w:VSCODE_DEV/w:$WSLENV
local WSL_EXT_ID="ms-vscode-remote.remote-wsl"
local WSL_EXT_WLOC=$(echo "" | VSCODE_DEV=1 ELECTRON_RUN_AS_NODE=1 "$ROOT/.build/electron/Code - OSS.exe" "out/cli.js" --locate-extension $WSL_EXT_ID)
cd $CWD
if [ -n "$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 $?
else
echo "Remote WSL not installed, trying to run VSCode in WSL."
fi
fi
}
if [ "$IN_WSL" == "true" ] && [ -z "$DISPLAY" ]; then
code-wsl "$@"
elif [ -f /mnt/wslg/versions.txt ]; then
code --disable-gpu "$@"
elif [ -f /.dockerenv ] || { [[ "$OSTYPE" == "linux"* ]] && [ -n "${GITHUB_ENVIRONMENT_ID:-}" ]; }; then
# Workaround for https://bugs.chromium.org/p/chromium/issues/detail?id=1263267
# Chromium does not release shared memory when streaming scripts
# which might exhaust the available resources in the container environment
# leading to failed script loading.
code --disable-dev-shm-usage "$@"
else
code "$@"
fi
exit $?