mirror of
https://github.com/oven-sh/bun
synced 2026-02-02 15:08:46 +00:00
87 lines
1.8 KiB
Bash
Executable File
87 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -e
|
|
cd $(dirname $(dirname "${BASH_SOURCE[0]}"))
|
|
|
|
zig_version=""
|
|
if [ -n "$1" ]; then
|
|
zig_version="$1"
|
|
update_repo=true
|
|
|
|
if [ "$zig_version" == "master" ]; then
|
|
zig_version=$(curl -fsSL https://ziglang.org/download/index.json | jq -r .master.version)
|
|
fi
|
|
else
|
|
zig_version=$(grep 'recommended_zig_version = "' "build.zig" | cut -d'"' -f2)
|
|
fi
|
|
|
|
case $(uname -ms) in
|
|
'Darwin x86_64')
|
|
target='macos'
|
|
arch='x86_64'
|
|
;;
|
|
'Darwin arm64')
|
|
target='macos'
|
|
arch='aarch64'
|
|
;;
|
|
'Linux aarch64' | 'Linux arm64')
|
|
target='linux'
|
|
arch='aarch64'
|
|
;;
|
|
'Linux x86_64')
|
|
target='linux'
|
|
arch='aarch64'
|
|
;;
|
|
*)
|
|
printf "error: cannot get platform name from '%s'\n" "${unamestr}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
url="https://ziglang.org/builds/zig-${target}-${arch}-${zig_version}.tar.xz"
|
|
dest=".cache/zig-${zig_version}.tar.xz"
|
|
extract_at=".cache/zig"
|
|
|
|
mkdir -p ".cache"
|
|
|
|
update_repo_if_needed() {
|
|
if [ "$update_repo" == "true" ]; then
|
|
files=(
|
|
build.zig
|
|
Dockerfile
|
|
|
|
.github/workflows/*
|
|
|
|
docs/project/contributing.md
|
|
docs/project/building-windows.md
|
|
);
|
|
|
|
zig_version_previous=$(grep 'recommended_zig_version = "' "build.zig" | cut -d'"' -f2)
|
|
|
|
for file in ${files[@]}; do
|
|
sed -i '' 's/'"${zig_version_previous}"'/'"${zig_version}"'/g' "$file"
|
|
done
|
|
|
|
printf "Zig was updated to ${zig_version}. Please commit new files."
|
|
fi
|
|
}
|
|
|
|
if [ -e "${extract_at}/.version" ]; then
|
|
if [ "$(cat "${extract_at}/.version")" == "${url}" ]; then
|
|
update_repo_if_needed
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
if ! [ -e "${dest}" ]; then
|
|
printf "-- Downloading Zig v%s\n" "${zig_version}"
|
|
curl -o "$dest" -L "$url"
|
|
fi
|
|
|
|
rm -rf "${extract_at}"
|
|
mkdir -p "${extract_at}"
|
|
tar -xzf "${dest}" -C "${extract_at}" --strip-components=1
|
|
|
|
echo "${url}" > "${extract_at}/.version"
|
|
|
|
update_repo_if_needed
|