mirror of https://github.com/coder/code-server.git
118 lines
4.4 KiB
Bash
Executable File
118 lines
4.4 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"
|
|
],
|
|
"aiConfig": {
|
|
"ariaKey": "code-server"
|
|
}
|
|
}
|
|
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 "$@"
|