Skip to content

Commit ba66988

Browse files
committed
fix(ci): pin tree-sitter tarball SHA256 and force HTTPS
Sonar S6506 (C security on new code): curl -fsSL allowed insecure redirects. Match scripts/install-bun.sh: --proto =https, SHA256 check, install into RUNNER_TEMP and GITHUB_PATH (no sudo).
1 parent 24d7f77 commit ba66988

1 file changed

Lines changed: 18 additions & 14 deletions

File tree

‎scripts/install-tree-sitter-cli.sh‎

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
# Used by CI instead of `npm install -g --ignore-scripts tree-sitter-cli`:
66
# that package's binary is fetched in a postinstall script, so
77
# --ignore-scripts (Sonar S6505) leaves `tree-sitter` missing (ENOENT).
8-
# A release tarball has no lifecycle scripts.
98
set -euo pipefail
109

1110
VER="${TREE_SITTER_CLI_VERSION:-0.25.0}"
12-
DEST="${TREE_SITTER_CLI_DEST:-/usr/local/bin/tree-sitter}"
11+
# tree-sitter-linux-x64.gz from
12+
# https://github.com/tree-sitter/tree-sitter/releases/tag/v0.25.0
13+
SHA256="${TREE_SITTER_LINUX_X64_SHA256:-d7b68a7a79459c0c23e062f719fe90781ed284a4fb172756e217ca08ea86b8d3}"
1314

1415
arch="$(uname -m)"
1516
case "$arch" in
@@ -22,17 +23,20 @@ case "$arch" in
2223
esac
2324

2425
url="https://github.com/tree-sitter/tree-sitter/releases/download/v${VER}/tree-sitter-linux-${ts_arch}.gz"
25-
tmp="$(mktemp)"
26-
trap 'rm -f "$tmp"' EXIT
27-
curl -fsSL "$url" | gunzip > "$tmp"
28-
chmod +x "$tmp"
26+
workdir="${RUNNER_TEMP:-$(mktemp -d)}"
27+
archive="${workdir}/tree-sitter-linux-${ts_arch}.gz"
28+
bin_dir="${workdir}/tree-sitter-cli"
29+
mkdir -p "$bin_dir"
2930

30-
if [ -w "$(dirname "$DEST")" ]; then
31-
mv "$tmp" "$DEST"
32-
trap - EXIT
33-
else
34-
sudo mv "$tmp" "$DEST"
35-
trap - EXIT
36-
fi
31+
curl --fail --location --retry 3 --proto "=https" \
32+
--output "$archive" \
33+
"$url"
34+
printf '%s %s\n' "$SHA256" "$archive" | sha256sum --check --strict
35+
gunzip -c "$archive" > "${bin_dir}/tree-sitter"
36+
chmod +x "${bin_dir}/tree-sitter"
3737

38-
"$DEST" --version
38+
if [[ -n "${GITHUB_PATH:-}" ]]; then
39+
printf '%s\n' "$bin_dir" >> "$GITHUB_PATH"
40+
fi
41+
export PATH="${bin_dir}:${PATH}"
42+
tree-sitter --version

0 commit comments

Comments
 (0)