mirror of
https://github.com/cdr/code-server.git
synced 2026-04-02 03:23:17 +02:00
For the NPM package (and tests, at least for now), we will still use linux-x64, but this is going to allow using the platform build targets for our standalone releases so we can avoid having to copy all the packaging steps (like cleaning up modules). This does mean that the NPM package when installed will be missing those cleanup steps. Possibly we can try to break out the packaging step into a something that can be ran standalone (which will also require installing dev dependencies like gulp) but not sure how much work this would be.
144 lines
5.2 KiB
Bash
Executable file
144 lines
5.2 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-$VSCODE_TARGET/bin/$1"
|
|
}
|
|
|
|
copy-bin-script() {
|
|
local script="$1"
|
|
local dest="lib/vscode-reh-web-$VSCODE_TARGET/bin/$script"
|
|
cp "lib/vscode/resources/server/bin/$script" "$dest"
|
|
sed -i.bak "s/@@VERSION@@/$(vscode_version)/g" "$dest"
|
|
sed -i.bak "s/@@COMMIT@@/$BUILD_SOURCEVERSION/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"
|
|
# We do not want expansion here; this text should make it to the file as-is.
|
|
# shellcheck disable=SC2016
|
|
sed -i.bak 's/$ROOT\/node/${NODE_EXEC_PATH:-$ROOT\/lib\/node}/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
|
|
|
|
# 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.
|
|
#
|
|
# Also, we use code-server's commit rather than VS Code's otherwise it would
|
|
# not update when only our patch files change, and that will cause caching
|
|
# issues where the browser keeps using outdated code.
|
|
export BUILD_SOURCEVERSION
|
|
BUILD_SOURCEVERSION=$(git rev-parse HEAD)
|
|
|
|
pushd lib/vscode
|
|
|
|
if [[ ! ${VERSION-} ]]; then
|
|
echo "VERSION not set. Please set before running this script:"
|
|
echo "VERSION='0.0.0' npm run build:vscode"
|
|
exit 1
|
|
fi
|
|
|
|
# Add the date, our name, links, enable telemetry (this just makes telemetry
|
|
# available; telemetry can still be disabled by flag or setting), and
|
|
# configure trusted extensions (since some, like github.copilot-chat, never
|
|
# ask to be trusted and this is the only way to get auth working).
|
|
#
|
|
# 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"
|
|
],
|
|
"trustedExtensionAuthAccess": [
|
|
"vscode.git", "vscode.github",
|
|
"github.vscode-pull-request-github",
|
|
"github.copilot", "github.copilot-chat"
|
|
],
|
|
"aiConfig": {
|
|
"ariaKey": "code-server"
|
|
}
|
|
}
|
|
EOF
|
|
) > product.json
|
|
|
|
npm run gulp core-ci
|
|
npm run gulp "vscode-reh-web-$VSCODE_TARGET${MINIFY:+-min}-ci"
|
|
|
|
# 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
|
|
|
|
pushd "lib/vscode-reh-web-$VSCODE_TARGET"
|
|
# Make sure Code took the version we set in the environment variable. Not
|
|
# having a version will break display languages.
|
|
if ! jq -e .commit product.json; then
|
|
echo "'commit' is missing from product.json"
|
|
exit 1
|
|
fi
|
|
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 "$@"
|