浏览代码

Change bun link (#4162)

* change bun to download from us

* make it use branch
Khaleel Al-Adhami 7 月之前
父节点
当前提交
189700ecb3
共有 2 个文件被更改,包括 313 次插入1 次删除
  1. 2 1
      reflex/constants/installer.py
  2. 311 0
      scripts/bun_install.sh

+ 2 - 1
reflex/constants/installer.py

@@ -44,7 +44,8 @@ class Bun(SimpleNamespace):
     DEFAULT_PATH = ROOT_PATH / "bin" / ("bun" if not IS_WINDOWS else "bun.exe")
 
     # URL to bun install script.
-    INSTALL_URL = "https://bun.sh/install"
+    INSTALL_URL = "https://raw.githubusercontent.com/reflex-dev/reflex/change-bun-link/scripts/bun_install.sh"
+
     # URL to windows install script.
     WINDOWS_INSTALL_URL = (
         "https://raw.githubusercontent.com/reflex-dev/reflex/main/scripts/install.ps1"

+ 311 - 0
scripts/bun_install.sh

@@ -0,0 +1,311 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+platform=$(uname -ms)
+
+if [[ ${OS:-} = Windows_NT ]]; then
+  if [[ $platform != MINGW64* ]]; then
+    powershell -c "irm bun.sh/install.ps1|iex"
+    exit $?
+  fi
+fi
+
+# Reset
+Color_Off=''
+
+# Regular Colors
+Red=''
+Green=''
+Dim='' # White
+
+# Bold
+Bold_White=''
+Bold_Green=''
+
+if [[ -t 1 ]]; then
+    # Reset
+    Color_Off='\033[0m' # Text Reset
+
+    # Regular Colors
+    Red='\033[0;31m'   # Red
+    Green='\033[0;32m' # Green
+    Dim='\033[0;2m'    # White
+
+    # Bold
+    Bold_Green='\033[1;32m' # Bold Green
+    Bold_White='\033[1m'    # Bold White
+fi
+
+error() {
+    echo -e "${Red}error${Color_Off}:" "$@" >&2
+    exit 1
+}
+
+info() {
+    echo -e "${Dim}$@ ${Color_Off}"
+}
+
+info_bold() {
+    echo -e "${Bold_White}$@ ${Color_Off}"
+}
+
+success() {
+    echo -e "${Green}$@ ${Color_Off}"
+}
+
+command -v unzip >/dev/null ||
+    error 'unzip is required to install bun'
+
+if [[ $# -gt 2 ]]; then
+    error 'Too many arguments, only 2 are allowed. The first can be a specific tag of bun to install. (e.g. "bun-v0.1.4") The second can be a build variant of bun to install. (e.g. "debug-info")'
+fi
+
+case $platform in
+'Darwin x86_64')
+    target=darwin-x64
+    ;;
+'Darwin arm64')
+    target=darwin-aarch64
+    ;;
+'Linux aarch64' | 'Linux arm64')
+    target=linux-aarch64
+    ;;
+'MINGW64'*)
+    target=windows-x64
+    ;;
+'Linux x86_64' | *)
+    target=linux-x64
+    ;;
+esac
+
+if [[ $target = darwin-x64 ]]; then
+    # Is this process running in Rosetta?
+    # redirect stderr to devnull to avoid error message when not running in Rosetta
+    if [[ $(sysctl -n sysctl.proc_translated 2>/dev/null) = 1 ]]; then
+        target=darwin-aarch64
+        info "Your shell is running in Rosetta 2. Downloading bun for $target instead"
+    fi
+fi
+
+GITHUB=${GITHUB-"https://github.com"}
+
+github_repo="$GITHUB/oven-sh/bun"
+
+if [[ $target = darwin-x64 ]]; then
+    # If AVX2 isn't supported, use the -baseline build
+    if [[ $(sysctl -a | grep machdep.cpu | grep AVX2) == '' ]]; then
+        target=darwin-x64-baseline
+    fi
+fi
+
+if [[ $target = linux-x64 ]]; then
+    # If AVX2 isn't supported, use the -baseline build
+    if [[ $(cat /proc/cpuinfo | grep avx2) = '' ]]; then
+        target=linux-x64-baseline
+    fi
+fi
+
+exe_name=bun
+
+if [[ $# = 2 && $2 = debug-info ]]; then
+    target=$target-profile
+    exe_name=bun-profile
+    info "You requested a debug build of bun. More information will be shown if a crash occurs."
+fi
+
+if [[ $# = 0 ]]; then
+    bun_uri=$github_repo/releases/latest/download/bun-$target.zip
+else
+    bun_uri=$github_repo/releases/download/$1/bun-$target.zip
+fi
+
+install_env=BUN_INSTALL
+bin_env=\$$install_env/bin
+
+install_dir=${!install_env:-$HOME/.bun}
+bin_dir=$install_dir/bin
+exe=$bin_dir/bun
+
+if [[ ! -d $bin_dir ]]; then
+    mkdir -p "$bin_dir" ||
+        error "Failed to create install directory \"$bin_dir\""
+fi
+
+curl --fail --location --progress-bar --output "$exe.zip" "$bun_uri" ||
+    error "Failed to download bun from \"$bun_uri\""
+
+unzip -oqd "$bin_dir" "$exe.zip" ||
+    error 'Failed to extract bun'
+
+mv "$bin_dir/bun-$target/$exe_name" "$exe" ||
+    error 'Failed to move extracted bun to destination'
+
+chmod +x "$exe" ||
+    error 'Failed to set permissions on bun executable'
+
+rm -r "$bin_dir/bun-$target" "$exe.zip"
+
+tildify() {
+    if [[ $1 = $HOME/* ]]; then
+        local replacement=\~/
+
+        echo "${1/$HOME\//$replacement}"
+    else
+        echo "$1"
+    fi
+}
+
+success "bun was installed successfully to $Bold_Green$(tildify "$exe")"
+
+if command -v bun >/dev/null; then
+    # Install completions, but we don't care if it fails
+    IS_BUN_AUTO_UPDATE=true $exe completions &>/dev/null || :
+
+    echo "Run 'bun --help' to get started"
+    exit
+fi
+
+refresh_command=''
+
+tilde_bin_dir=$(tildify "$bin_dir")
+quoted_install_dir=\"${install_dir//\"/\\\"}\"
+
+if [[ $quoted_install_dir = \"$HOME/* ]]; then
+    quoted_install_dir=${quoted_install_dir/$HOME\//\$HOME/}
+fi
+
+echo
+
+case $(basename "$SHELL") in
+fish)
+    # Install completions, but we don't care if it fails
+    IS_BUN_AUTO_UPDATE=true SHELL=fish $exe completions &>/dev/null || :
+
+    commands=(
+        "set --export $install_env $quoted_install_dir"
+        "set --export PATH $bin_env \$PATH"
+    )
+
+    fish_config=$HOME/.config/fish/config.fish
+    tilde_fish_config=$(tildify "$fish_config")
+
+    if [[ -w $fish_config ]]; then
+        {
+            echo -e '\n# bun'
+
+            for command in "${commands[@]}"; do
+                echo "$command"
+            done
+        } >>"$fish_config"
+
+        info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_fish_config\""
+
+        refresh_command="source $tilde_fish_config"
+    else
+        echo "Manually add the directory to $tilde_fish_config (or similar):"
+
+        for command in "${commands[@]}"; do
+            info_bold "  $command"
+        done
+    fi
+    ;;
+zsh)
+    # Install completions, but we don't care if it fails
+    IS_BUN_AUTO_UPDATE=true SHELL=zsh $exe completions &>/dev/null || :
+
+    commands=(
+        "export $install_env=$quoted_install_dir"
+        "export PATH=\"$bin_env:\$PATH\""
+    )
+
+    zsh_config=$HOME/.zshrc
+    tilde_zsh_config=$(tildify "$zsh_config")
+
+    if [[ -w $zsh_config ]]; then
+        {
+            echo -e '\n# bun'
+
+            for command in "${commands[@]}"; do
+                echo "$command"
+            done
+        } >>"$zsh_config"
+
+        info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_zsh_config\""
+
+        refresh_command="exec $SHELL"
+    else
+        echo "Manually add the directory to $tilde_zsh_config (or similar):"
+
+        for command in "${commands[@]}"; do
+            info_bold "  $command"
+        done
+    fi
+    ;;
+bash)
+    # Install completions, but we don't care if it fails
+    IS_BUN_AUTO_UPDATE=true SHELL=bash $exe completions &>/dev/null || :
+
+    commands=(
+        "export $install_env=$quoted_install_dir"
+        "export PATH=\"$bin_env:\$PATH\""
+    )
+
+    bash_configs=(
+        "$HOME/.bashrc"
+        "$HOME/.bash_profile"
+    )
+
+    if [[ ${XDG_CONFIG_HOME:-} ]]; then
+        bash_configs+=(
+            "$XDG_CONFIG_HOME/.bash_profile"
+            "$XDG_CONFIG_HOME/.bashrc"
+            "$XDG_CONFIG_HOME/bash_profile"
+            "$XDG_CONFIG_HOME/bashrc"
+        )
+    fi
+
+    set_manually=true
+    for bash_config in "${bash_configs[@]}"; do
+        tilde_bash_config=$(tildify "$bash_config")
+
+        if [[ -w $bash_config ]]; then
+            {
+                echo -e '\n# bun'
+
+                for command in "${commands[@]}"; do
+                    echo "$command"
+                done
+            } >>"$bash_config"
+
+            info "Added \"$tilde_bin_dir\" to \$PATH in \"$tilde_bash_config\""
+
+            refresh_command="source $bash_config"
+            set_manually=false
+            break
+        fi
+    done
+
+    if [[ $set_manually = true ]]; then
+        echo "Manually add the directory to $tilde_bash_config (or similar):"
+
+        for command in "${commands[@]}"; do
+            info_bold "  $command"
+        done
+    fi
+    ;;
+*)
+    echo 'Manually add the directory to ~/.bashrc (or similar):'
+    info_bold "  export $install_env=$quoted_install_dir"
+    info_bold "  export PATH=\"$bin_env:\$PATH\""
+    ;;
+esac
+
+echo
+info "To get started, run:"
+echo
+
+if [[ $refresh_command ]]; then
+    info_bold "  $refresh_command"
+fi
+
+info_bold "  bun --help"