mirror of
https://github.com/oven-sh/bun
synced 2026-02-09 10:28:47 +00:00
144 lines
4.0 KiB
Bash
144 lines
4.0 KiB
Bash
#!/bin/bash
|
|
|
|
# Reset
|
|
Color_Off=''
|
|
|
|
# Regular Colors
|
|
Red=''
|
|
Green=''
|
|
|
|
# Bold
|
|
BWhite=''
|
|
BGreen=''
|
|
|
|
if test -t 1; then
|
|
# Reset
|
|
Color_Off='\033[0m' # Text Reset
|
|
|
|
# Regular Colors
|
|
Red='\033[0;31m' # Red
|
|
Green='\033[0;32m' # Green
|
|
White='\033[0;37m' # White
|
|
|
|
# Bold
|
|
BGreen='\033[1;32m' # Green
|
|
BWhite='\033[1;37m' # White
|
|
fi
|
|
|
|
if ! command -v unzip >/dev/null; then
|
|
echo -e "${Red}error${Color_Off}: unzip is required to install Bun (see: https://github.com/Jarred-Sumner/bun#unzip-is-required)." 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$OS" = "Windows_NT" ]; then
|
|
echo "error: Please install Bun using Windows Subsystem for Linux."
|
|
exit 1
|
|
else
|
|
case $(uname -sm) in
|
|
"Darwin x86_64") target="darwin-x64" ;;
|
|
"Darwin arm64") target="darwin-aarch64" ;;
|
|
*) target="linux-x64" ;;
|
|
esac
|
|
fi
|
|
|
|
github_repo="https://github.com/Jarred-Sumner/bun-releases-for-updater"
|
|
|
|
if [ $# -eq 0 ]; then
|
|
bun_uri="$github_repo/releases/latest/download/bun-${target}.zip"
|
|
else
|
|
bun_uri="$github_repo/releases/download/${1}/bun-${target}.zip"
|
|
fi
|
|
|
|
bun_install="${BUN_INSTALL:-$HOME/.bun}"
|
|
bin_dir="$bun_install/bin"
|
|
exe="$bin_dir/bun"
|
|
|
|
if [ ! -d "$bin_dir" ]; then
|
|
mkdir -p "$bin_dir"
|
|
|
|
if (($?)); then
|
|
echo -e "${Red}error${Color_Off}: Failed to create install directory $bin_dir" 1>&2
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
curl --fail --location --progress-bar --output "$exe.zip" "$bun_uri"
|
|
|
|
if (($?)); then
|
|
echo -e "${Red}error${Color_Off}: Failed to download Bun from $bun_uri" 1>&2
|
|
exit 1
|
|
fi
|
|
unzip -d "$bin_dir" -q -o "$exe.zip"
|
|
if (($?)); then
|
|
echo -e "${Red}error${Color_Off}: Failed to extract Bun" 1>&2
|
|
exit 1
|
|
fi
|
|
mv "$bin_dir/bun-${target}/bun" "$exe"
|
|
if (($?)); then
|
|
echo -e "${Red}error${Color_Off}: Failed to extract Bun" 1>&2
|
|
exit 1
|
|
fi
|
|
chmod +x "$exe"
|
|
if (($?)); then
|
|
echo -e "${Red}error${Color_Off}: Failed to set permissions on bun executable." 1>&2
|
|
exit 1
|
|
fi
|
|
rmdir $bin_dir/bun-${target}
|
|
rm "$exe.zip"
|
|
|
|
echo -e "${Green}Bun was installed successfully to ${BGreen}$exe$Color_Off"
|
|
|
|
if command -v bun --version >/dev/null; then
|
|
# Install completions, but we don't care if it fails
|
|
IS_BUN_AUTO_UPDATE="true" $exe completions >/dev/null 2>&1
|
|
|
|
echo "Run 'bun --help' to get started"
|
|
exit 0
|
|
fi
|
|
|
|
if test $(basename $SHELL) == "fish"; then
|
|
# Install completions, but we don't care if it fails
|
|
IS_BUN_AUTO_UPDATE="true" SHELL="fish" $exe completions >/dev/null 2>&1
|
|
if test -f $HOME/.config/fish; then
|
|
echo -e "\nset -Ux BUN_INSTALL \"$bun_install\"\n" >>"$HOME/.config/fish"
|
|
echo -e "\nset -px --path PATH \"$bin_dir\"\n" >>"$HOME/.config/fish"
|
|
echo ""
|
|
echo -e "$BWhite Added \"$bin_dir\" to PATH in \"$HOME/.config/fish\"$Color_Off"
|
|
else
|
|
echo ""
|
|
echo "Manually add the directory to your \$HOME/.config/fish"
|
|
echo ""
|
|
echo -e " $BWhite set -Ux BUN_INSTALL \"$bun_install\"$Color_Off"
|
|
echo -e " $BWhite set -px --path PATH \"$bin_dir\"$Color_Off"
|
|
fi
|
|
elif
|
|
test $(basename $SHELL) == "zsh"
|
|
then
|
|
# Install completions, but we don't care if it fails
|
|
IS_BUN_AUTO_UPDATE="true" SHELL="zsh" $exe completions >/dev/null 2>&1
|
|
|
|
if test -f $HOME/.zshrc; then
|
|
echo -e "export BUN_INSTALL=\"$bun_install\"" >>"$HOME/.zshrc"
|
|
echo -e "export PATH=\"\$BUN_INSTALL/bin:\$PATH\"" >>"$HOME/.zshrc"
|
|
echo ""
|
|
echo -e "$BWhite Added \"$bin_dir\" to PATH in \"$HOME/.zshrc\"$Color_Off"
|
|
else
|
|
echo ""
|
|
echo "Manually add the directory to your \$HOME/.zshrc (or similar)"
|
|
echo ""
|
|
echo -e " $BWhite export BUN_INSTALL=\"$bun_install\"$Color_Off"
|
|
echo -e " $BWhite export PATH=\"\$BUN_INSTALL/bin:\$PATH\"$Color_Off"
|
|
fi
|
|
|
|
else
|
|
echo ""
|
|
echo "Manually add the directory to your \$HOME/.bashrc (or similar)"
|
|
echo ""
|
|
echo -e " $BWhiteexport BUN_INSTALL=\"$bun_install\"$Color_Off"
|
|
echo -e " $BWhiteexport PATH=\"\$BUN_INSTALL/bin:\$PATH\"$Color_Off"
|
|
fi
|
|
echo ""
|
|
echo -e "To get started, run"
|
|
echo -e "$BWhite"
|
|
echo -e " bun --help$Color_Off"
|