9087e0c091
* Include bin scripts for all platforms These will get symlinked as part of the postinstall. These scripts provide everything ours does inside the integrated terminal plus more. * Improve OS detection Specifically for Windows although we do not yet support Windows. Also standardize the duplicate arch functions since they had drifted from each other bit. * Remove duplicate asar symlink Since standalone releases run the postinstall they will get the asar symlink there. That means the symlink will not exist for the npm package and we will not need to ignore it. The symlink portion is split out so it can be re-used for other symlinks (for example linking bin scripts). * Add symlinks to bin scripts * Add test for opening a file from the terminal * Add global Playwright timeout Otherwise it will exceed the Actions timeout and get rudely killed without any output. * Make sed work on macOS * Fix Node path in bin scripts * Disable shellcheck expansion error * Make scripts executable * Remove .bak files created by sed * Include Code build script in cache hash Otherwise if we change the script it will not rebuild Code. * Make sure the terminal opens The selector was timing out even though it matched more than one element but matching on the focused one appears to work. In addition add a loop so it can keep trying to open the terminal if something goes wrong with the focus.
115 lines
4.3 KiB
Bash
Executable File
115 lines
4.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Builds vscode into lib/vscode/out-vscode.
|
|
|
|
# MINIFY controls whether a minified version of vscode is built.
|
|
MINIFY=${MINIFY-true}
|
|
|
|
delete-bin-script() {
|
|
rm -f "lib/vscode-reh-web-linux-x64/bin/$1"
|
|
}
|
|
|
|
copy-bin-script() {
|
|
local script="$1"
|
|
local dest="lib/vscode-reh-web-linux-x64/bin/$script"
|
|
cp "lib/vscode/resources/server/bin/$script" "$dest"
|
|
sed -i.bak "s/@@VERSION@@/$(vscode_version)/g" "$dest"
|
|
sed -i.bak "s/@@COMMIT@@/$VSCODE_DISTRO_COMMIT/g" "$dest"
|
|
sed -i.bak "s/@@APPNAME@@/code-server/g" "$dest"
|
|
|
|
# Fix Node path on Darwin and Linux.
|
|
# We do not want expansion here; this text should make it to the file as-is.
|
|
# shellcheck disable=SC2016
|
|
sed -i.bak 's/^ROOT=\(.*\)$/VSROOT=\1\nROOT="$(dirname "$(dirname "$VSROOT")")"/g' "$dest"
|
|
sed -i.bak 's/ROOT\/out/VSROOT\/out/g' "$dest"
|
|
|
|
# Fix Node path on Windows.
|
|
sed -i.bak 's/^set ROOT_DIR=\(.*\)$/set ROOT_DIR=%~dp0..\\..\\..\\..\r\nset VSROOT_DIR=\1/g' "$dest"
|
|
sed -i.bak 's/%ROOT_DIR%\\out/%VSROOT_DIR%\\out/g' "$dest"
|
|
|
|
chmod +x "$dest"
|
|
rm "$dest.bak"
|
|
}
|
|
|
|
main() {
|
|
cd "$(dirname "${0}")/../.."
|
|
|
|
source ./ci/lib.sh
|
|
|
|
pushd lib/vscode
|
|
|
|
# Set the commit Code will embed into the product.json. We need to do this
|
|
# since Code tries to get the commit from the `.git` directory which will fail
|
|
# as it is a submodule.
|
|
export VSCODE_DISTRO_COMMIT
|
|
VSCODE_DISTRO_COMMIT=$(git rev-parse HEAD)
|
|
|
|
# Add the date, our name, links, and enable telemetry (this just makes
|
|
# telemetry available; telemetry can still be disabled by flag or setting).
|
|
# This needs to be done before building as Code will read this file and embed
|
|
# it into the client-side code.
|
|
git checkout product.json # Reset in case the script exited early.
|
|
cp product.json product.original.json # Since jq has no inline edit.
|
|
jq --slurp '.[0] * .[1]' product.original.json <(
|
|
cat << EOF
|
|
{
|
|
"enableTelemetry": true,
|
|
"quality": "stable",
|
|
"codeServerVersion": "$VERSION",
|
|
"nameShort": "code-server",
|
|
"nameLong": "code-server",
|
|
"applicationName": "code-server",
|
|
"dataFolderName": ".code-server",
|
|
"win32MutexName": "codeserver",
|
|
"licenseUrl": "https://github.com/coder/code-server/blob/main/LICENSE",
|
|
"win32DirName": "code-server",
|
|
"win32NameVersion": "code-server",
|
|
"win32AppUserModelId": "coder.code-server",
|
|
"win32ShellNameShort": "c&ode-server",
|
|
"darwinBundleIdentifier": "com.coder.code.server",
|
|
"linuxIconName": "com.coder.code.server",
|
|
"reportIssueUrl": "https://github.com/coder/code-server/issues/new",
|
|
"documentationUrl": "https://go.microsoft.com/fwlink/?LinkID=533484#vscode",
|
|
"keyboardShortcutsUrlMac": "https://go.microsoft.com/fwlink/?linkid=832143",
|
|
"keyboardShortcutsUrlLinux": "https://go.microsoft.com/fwlink/?linkid=832144",
|
|
"keyboardShortcutsUrlWin": "https://go.microsoft.com/fwlink/?linkid=832145",
|
|
"introductoryVideosUrl": "https://go.microsoft.com/fwlink/?linkid=832146",
|
|
"tipsAndTricksUrl": "https://go.microsoft.com/fwlink/?linkid=852118",
|
|
"newsletterSignupUrl": "https://www.research.net/r/vsc-newsletter",
|
|
"linkProtectionTrustedDomains": [
|
|
"https://open-vsx.org"
|
|
]
|
|
}
|
|
EOF
|
|
) > product.json
|
|
|
|
# Any platform here works since we will do our own packaging. We have to do
|
|
# this because we have an NPM package that could be installed on any platform.
|
|
# The correct platform dependencies and scripts will be installed as part of
|
|
# the post-install during `npm install` or when building a standalone release.
|
|
yarn gulp "vscode-reh-web-linux-x64${MINIFY:+-min}"
|
|
|
|
# Reset so if you develop after building you will not be stuck with the wrong
|
|
# commit (the dev client will use `oss-dev` but the dev server will still use
|
|
# product.json which will have `stable-$commit`).
|
|
git checkout product.json
|
|
|
|
popd
|
|
|
|
# These provide a `code-server` command in the integrated terminal to open
|
|
# files in the current instance.
|
|
delete-bin-script remote-cli/code-server
|
|
copy-bin-script remote-cli/code-darwin.sh
|
|
copy-bin-script remote-cli/code-linux.sh
|
|
copy-bin-script remote-cli/code.cmd
|
|
|
|
# These provide a way for terminal applications to open browser windows.
|
|
delete-bin-script helpers/browser.sh
|
|
copy-bin-script helpers/browser-darwin.sh
|
|
copy-bin-script helpers/browser-linux.sh
|
|
copy-bin-script helpers/browser.cmd
|
|
}
|
|
|
|
main "$@"
|