code.sh 2.0 KB
Newer Older
1
#!/usr/bin/env bash
E
Erich Gamma 已提交
2

M
Martin Aeschlimann 已提交
3
set -e
M
Martin Aeschlimann 已提交
4

E
Erich Gamma 已提交
5 6
if [[ "$OSTYPE" == "darwin"* ]]; then
	realpath() { [[ $1 = /* ]] && echo "$1" || echo "$PWD/${1#./}"; }
W
William Esz 已提交
7
	ROOT=$(dirname "$(dirname "$(realpath "$0")")")
E
Erich Gamma 已提交
8
else
W
William Esz 已提交
9
	ROOT=$(dirname "$(dirname "$(readlink -f $0)")")
M
Martin Aeschlimann 已提交
10 11 12
	if grep -qi Microsoft /proc/version; then
		IN_WSL=true
	fi
E
Erich Gamma 已提交
13 14
fi

J
Joao Moreno 已提交
15
function code() {
W
William Esz 已提交
16
	cd "$ROOT"
E
Erich Gamma 已提交
17

18
	if [[ "$OSTYPE" == "darwin"* ]]; then
J
damn it  
Joao Moreno 已提交
19
		NAME=`node -p "require('./product.json').nameLong"`
20 21 22
		CODE="./.build/electron/$NAME.app/Contents/MacOS/Electron"
	else
		NAME=`node -p "require('./product.json').applicationName"`
J
Joao Moreno 已提交
23
		CODE=".build/electron/$NAME"
24 25
	fi

J
Joao Moreno 已提交
26
	# Node modules
J
Joao Moreno 已提交
27
	test -d node_modules || yarn
E
Erich Gamma 已提交
28

J
Joao Moreno 已提交
29
	# Get electron
J
Joao Moreno 已提交
30
	yarn electron
J
Joao Moreno 已提交
31

J
Joao Moreno 已提交
32 33 34 35 36 37
	# Manage built-in extensions
	if [[ "$1" == "--builtin" ]]; then
		exec "$CODE" build/builtin
		return
	fi

J
Joao Moreno 已提交
38 39
	# Sync built-in extensions
	node build/lib/builtInExtensions.js
40

J
Joao Moreno 已提交
41
	# Build
42
	test -d out || yarn compile
J
Joao Moreno 已提交
43

J
Joao Moreno 已提交
44 45 46
	# Configuration
	export NODE_ENV=development
	export VSCODE_DEV=1
47
	export VSCODE_CLI=1
J
Joao Moreno 已提交
48
	export ELECTRON_ENABLE_STACK_DUMPING=1
49
	export ELECTRON_ENABLE_LOGGING=1
R
Rob Lourens 已提交
50
	export VSCODE_LOGS=
J
Joao Moreno 已提交
51 52

	# Launch Code
53
	exec "$CODE" . --no-sandbox "$@"
J
Joao Moreno 已提交
54 55
}

M
Martin Aeschlimann 已提交
56 57
function code-wsl()
{
58 59 60
	HOST_IP=$(powershell.exe -Command "& {(Get-NetIPAddress | Where-Object {\$_.InterfaceAlias -like '*WSL*' -and \$_.AddressFamily -eq 'IPv4'}).IPAddress}")
	export DISPLAY="$HOST_IP:0"

M
Martin Aeschlimann 已提交
61
	# in a wsl shell
62 63 64 65 66
	ELECTRON="$ROOT/.build/electron/Code - OSS.exe"
	if [ -f "$ELECTRON"  ]; then
		local CWD=$(pwd)
		cd $ROOT
		export WSLENV=ELECTRON_RUN_AS_NODE/w:$WSLENV
K
kieferrm 已提交
67
		local WSL_EXT_ID="ms-vscode-remote.remote-wsl"
68 69 70
		local WSL_EXT_WLOC=$(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
71 72 73 74
			# 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 $?
75 76
		else
			echo "Remote WSL not installed, trying to run VSCode in WSL."
77
		fi
M
Martin Aeschlimann 已提交
78 79 80
	fi
}

81
if ! [ -z ${IN_WSL+x} ]; then
M
Martin Aeschlimann 已提交
82
	code-wsl "$@"
83
fi
84
code "$@"