blob: 82c0254f1317125d6c7ffb1c415243388f96dbdf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
#!/bin/sh
# Install a Node.js 24 (LTS) runtime under ~/.local/share/copilot-node/ for the
# exclusive use of copilot.lua / copilot-lsp inside neovim. System-wide nodejs
# (currently 26.x in Arch) is unaffected.
#
# Background: copilot-language-server is incompatible with Node 26's default
# fetch implementation. Multiple upstream issues, no fix yet:
# https://github.com/zbirenbaum/copilot.lua/issues/695
# https://github.com/github/copilot.vim/issues/282
# https://github.com/github/copilot-language-server-release/issues/45
# Symptom: "HTTP 200 response does not appear to originate from GitHub".
# Workaround universally confirmed in those threads: use Node 24.
#
# chezmoi re-runs this only when the script content (and thus NODE_VERSION)
# changes. Bump NODE_VERSION + NODE_SHA256 below to upgrade.
set -eu
NODE_VERSION=24.15.0
# linux-x64 sha256 from https://nodejs.org/download/release/latest-v24.x/SHASUMS256.txt
NODE_SHA256=472655581fb851559730c48763e0c9d3bc25975c59d518003fc0849d3e4ba0f6
TARBALL="node-v${NODE_VERSION}-linux-x64.tar.xz"
DEST="${XDG_DATA_HOME:-$HOME/.local/share}/copilot-node"
STAMP="$DEST/.installed-${NODE_VERSION}"
if [ -x "$DEST/bin/node" ] && [ -f "$STAMP" ]; then
exit 0
fi
tmp=$(mktemp -d)
trap 'rm -rf "$tmp"' EXIT
curl --fail --silent --show-error --location \
--output "$tmp/$TARBALL" \
"https://nodejs.org/download/release/v${NODE_VERSION}/${TARBALL}"
printf '%s %s\n' "$NODE_SHA256" "$tmp/$TARBALL" | sha256sum -c -
tar -xJf "$tmp/$TARBALL" -C "$tmp"
rm -rf "$DEST"
mkdir -p "$(dirname "$DEST")"
mv "$tmp/node-v${NODE_VERSION}-linux-x64" "$DEST"
touch "$STAMP"
|