Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: whitespace in mise.run script #4153

Merged
merged 3 commits into from
Jan 18, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
308 changes: 154 additions & 154 deletions packaging/standalone/install.envsubst
Original file line number Diff line number Diff line change
Expand Up @@ -3,61 +3,61 @@ set -eu

#region logging setup
if [ "${MISE_DEBUG-}" = "true" ] || [ "${MISE_DEBUG-}" = "1" ]; then
debug() {
echo "$@" >&2
}
debug() {
echo "$@" >&2
}
else
debug() {
:
}
debug() {
:
}
fi

if [ "${MISE_QUIET-}" = "1" ] || [ "${MISE_QUIET-}" = "true" ]; then
info() {
:
}
info() {
:
}
else
info() {
echo "$@" >&2
}
info() {
echo "$@" >&2
}
fi

error() {
echo "$@" >&2
exit 1
echo "$@" >&2
exit 1
}
#endregion

#region environment setup
get_os() {
os="$(uname -s)"
if [ "$os" = Darwin ]; then
echo "macos"
elif [ "$os" = Linux ]; then
echo "linux"
else
error "unsupported OS: $os"
fi
os="$(uname -s)"
if [ "$os" = Darwin ]; then
echo "macos"
elif [ "$os" = Linux ]; then
echo "linux"
else
error "unsupported OS: $os"
fi
}

get_arch() {
musl=""
if type ldd >/dev/null 2>/dev/null; then
libc=$(ldd /bin/ls | grep 'musl' | head -1 | cut -d ' ' -f1)
if [ -n "$libc" ]; then
musl="-musl"
fi
fi
arch="$(uname -m)"
if [ "$arch" = x86_64 ]; then
echo "x64$musl"
elif [ "$arch" = aarch64 ] || [ "$arch" = arm64 ]; then
echo "arm64$musl"
elif [ "$arch" = armv7l ]; then
echo "armv7$musl"
else
error "unsupported architecture: $arch"
fi
musl=""
if type ldd >/dev/null 2>/dev/null; then
libc=$(ldd /bin/ls | grep 'musl' | head -1 | cut -d ' ' -f1)
if [ -n "$libc" ]; then
musl="-musl"
fi
fi
arch="$(uname -m)"
if [ "$arch" = x86_64 ]; then
echo "x64$musl"
elif [ "$arch" = aarch64 ] || [ "$arch" = arm64 ]; then
echo "arm64$musl"
elif [ "$arch" = armv7l ]; then
echo "armv7$musl"
else
error "unsupported architecture: $arch"
fi
}

get_ext() {
Expand Down Expand Up @@ -87,45 +87,45 @@ tar_supports_zstd() {
}

shasum_bin() {
if command -v shasum >/dev/null 2>&1; then
echo "shasum"
elif command -v sha256sum >/dev/null 2>&1; then
echo "sha256sum"
else
error "mise install requires shasum or sha256sum but neither is installed. Aborting."
fi
if command -v shasum >/dev/null 2>&1; then
echo "shasum"
elif command -v sha256sum >/dev/null 2>&1; then
echo "sha256sum"
else
error "mise install requires shasum or sha256sum but neither is installed. Aborting."
fi
}

get_checksum() {
version=$1
os="$(get_os)"
arch="$(get_arch)"
ext="$(get_ext)"
url="https://github.com/jdx/mise/releases/download/v${version}/SHASUMS256.txt"
version=$1
os="$(get_os)"
arch="$(get_arch)"
ext="$(get_ext)"
url="https://github.com/jdx/mise/releases/download/v${version}/SHASUMS256.txt"

# For current version use static checksum otherwise
# use checksum from releases
if [ "$version" = "$MISE_CURRENT_VERSION" ]; then
checksum_linux_x86_64="$MISE_CHECKSUM_LINUX_X86_64"
checksum_linux_x86_64_musl="$MISE_CHECKSUM_LINUX_X86_64_MUSL"
checksum_linux_arm64="$MISE_CHECKSUM_LINUX_ARM64"
checksum_linux_arm64_musl="$MISE_CHECKSUM_LINUX_ARM64_MUSL"
checksum_linux_armv7="$MISE_CHECKSUM_LINUX_ARMV7"
checksum_linux_armv7_musl="$MISE_CHECKSUM_LINUX_ARMV7_MUSL"
checksum_macos_x86_64="$MISE_CHECKSUM_MACOS_X86_64"
checksum_macos_arm64="$MISE_CHECKSUM_MACOS_ARM64"
checksum_linux_x86_64_zstd="$MISE_CHECKSUM_LINUX_X86_64_ZSTD"
checksum_linux_x86_64_musl_zstd="$MISE_CHECKSUM_LINUX_X86_64_MUSL_ZSTD"
checksum_linux_arm64_zstd="$MISE_CHECKSUM_LINUX_ARM64_ZSTD"
checksum_linux_arm64_musl_zstd="$MISE_CHECKSUM_LINUX_ARM64_MUSL_ZSTD"
checksum_linux_armv7_zstd="$MISE_CHECKSUM_LINUX_ARMV7_ZSTD"
checksum_linux_armv7_musl_zstd="$MISE_CHECKSUM_LINUX_ARMV7_MUSL_ZSTD"
checksum_macos_x86_64_zstd="$MISE_CHECKSUM_MACOS_X86_64_ZSTD"
checksum_macos_arm64_zstd="$MISE_CHECKSUM_MACOS_ARM64_ZSTD"
# For current version use static checksum otherwise
# use checksum from releases
if [ "$version" = "$MISE_CURRENT_VERSION" ]; then
checksum_linux_x86_64="$MISE_CHECKSUM_LINUX_X86_64"
checksum_linux_x86_64_musl="$MISE_CHECKSUM_LINUX_X86_64_MUSL"
checksum_linux_arm64="$MISE_CHECKSUM_LINUX_ARM64"
checksum_linux_arm64_musl="$MISE_CHECKSUM_LINUX_ARM64_MUSL"
checksum_linux_armv7="$MISE_CHECKSUM_LINUX_ARMV7"
checksum_linux_armv7_musl="$MISE_CHECKSUM_LINUX_ARMV7_MUSL"
checksum_macos_x86_64="$MISE_CHECKSUM_MACOS_X86_64"
checksum_macos_arm64="$MISE_CHECKSUM_MACOS_ARM64"
checksum_linux_x86_64_zstd="$MISE_CHECKSUM_LINUX_X86_64_ZSTD"
checksum_linux_x86_64_musl_zstd="$MISE_CHECKSUM_LINUX_X86_64_MUSL_ZSTD"
checksum_linux_arm64_zstd="$MISE_CHECKSUM_LINUX_ARM64_ZSTD"
checksum_linux_arm64_musl_zstd="$MISE_CHECKSUM_LINUX_ARM64_MUSL_ZSTD"
checksum_linux_armv7_zstd="$MISE_CHECKSUM_LINUX_ARMV7_ZSTD"
checksum_linux_armv7_musl_zstd="$MISE_CHECKSUM_LINUX_ARMV7_MUSL_ZSTD"
checksum_macos_x86_64_zstd="$MISE_CHECKSUM_MACOS_X86_64_ZSTD"
checksum_macos_arm64_zstd="$MISE_CHECKSUM_MACOS_ARM64_ZSTD"

# TODO: refactor this, it's a bit messy
if [ "$(get_ext)" = "tar.zst" ]; then
if [ "$os" = "linux" ]; then
if [ "$(get_ext)" = "tar.zst" ]; then
if [ "$os" = "linux" ]; then
if [ "$arch" = "x64" ]; then
echo "$checksum_linux_x86_64_zstd"
elif [ "$arch" = "x64-musl" ]; then
Expand Down Expand Up @@ -180,110 +180,110 @@ get_checksum() {
else
warn "no checksum for $os-$arch"
fi
fi
else
if command -v curl >/dev/null 2>&1; then
debug ">" curl -fsSL "$url"
checksums="$(curl --compressed -fsSL "$url")"
else
if command -v wget >/dev/null 2>&1; then
debug ">" wget -qO - "$url"
stderr=$(mktemp)
checksums="$(wget -qO - "$url")"
else
error "mise standalone install specific version requires curl or wget but neither is installed. Aborting."
fi
fi
# TODO: verify with minisign or gpg if available
fi
else
if command -v curl >/dev/null 2>&1; then
debug ">" curl -fsSL "$url"
checksums="$(curl --compressed -fsSL "$url")"
else
if command -v wget >/dev/null 2>&1; then
debug ">" wget -qO - "$url"
stderr=$(mktemp)
checksums="$(wget -qO - "$url")"
else
error "mise standalone install specific version requires curl or wget but neither is installed. Aborting."
fi
fi
# TODO: verify with minisign or gpg if available

checksum="$(echo "$checksums" | grep "$os-$arch.$ext")"
if ! echo "$checksum" | grep -Eq "^([0-9a-f]{32}|[0-9a-f]{64})"; then
warn "no checksum for mise $version and $os-$arch"
else
echo "$checksum"
fi
fi
checksum="$(echo "$checksums" | grep "$os-$arch.$ext")"
if ! echo "$checksum" | grep -Eq "^([0-9a-f]{32}|[0-9a-f]{64})"; then
warn "no checksum for mise $version and $os-$arch"
else
echo "$checksum"
fi
fi
}

#endregion

download_file() {
url="$1"
filename="$(basename "$url")"
cache_dir="$(mktemp -d)"
file="$cache_dir/$filename"
url="$1"
filename="$(basename "$url")"
cache_dir="$(mktemp -d)"
file="$cache_dir/$filename"

info "mise: installing mise..."
info "mise: installing mise..."

if command -v curl >/dev/null 2>&1; then
debug ">" curl -#fLo "$file" "$url"
curl -#fLo "$file" "$url"
else
if command -v wget >/dev/null 2>&1; then
debug ">" wget -qO "$file" "$url"
stderr=$(mktemp)
wget -O "$file" "$url" >"$stderr" 2>&1 || error "wget failed: $(cat "$stderr")"
else
error "mise standalone install requires curl or wget but neither is installed. Aborting."
fi
fi
if command -v curl >/dev/null 2>&1; then
debug ">" curl -#fLo "$file" "$url"
curl -#fLo "$file" "$url"
else
if command -v wget >/dev/null 2>&1; then
debug ">" wget -qO "$file" "$url"
stderr=$(mktemp)
wget -O "$file" "$url" >"$stderr" 2>&1 || error "wget failed: $(cat "$stderr")"
else
error "mise standalone install requires curl or wget but neither is installed. Aborting."
fi
fi

echo "$file"
echo "$file"
}

install_mise() {
version="${MISE_VERSION:-$MISE_CURRENT_VERSION}"
version="${version#v}"
os="$(get_os)"
arch="$(get_arch)"
ext="$(get_ext)"
install_path="${MISE_INSTALL_PATH:-$HOME/.local/bin/mise}"
install_dir="$(dirname "$install_path")"
tarball_url="https://github.com/jdx/mise/releases/download/v${version}/mise-v${version}-${os}-${arch}.${ext}"
version="${MISE_VERSION:-$MISE_CURRENT_VERSION}"
version="${version#v}"
os="$(get_os)"
arch="$(get_arch)"
ext="$(get_ext)"
install_path="${MISE_INSTALL_PATH:-$HOME/.local/bin/mise}"
install_dir="$(dirname "$install_path")"
tarball_url="https://github.com/jdx/mise/releases/download/v${version}/mise-v${version}-${os}-${arch}.${ext}"

cache_file=$(download_file "$tarball_url")
debug "mise-setup: tarball=$cache_file"
cache_file=$(download_file "$tarball_url")
debug "mise-setup: tarball=$cache_file"

debug "validating checksum"
cd "$(dirname "$cache_file")" && get_checksum "$version" | "$(shasum_bin)" -c >/dev/null
debug "validating checksum"
cd "$(dirname "$cache_file")" && get_checksum "$version" | "$(shasum_bin)" -c >/dev/null

# extract tarball
mkdir -p "$install_dir"
rm -rf "$install_path"
cd "$(mktemp -d)"
if [ "$(get_ext)" = "tar.zst" ] && ! tar_supports_zstd; then
# extract tarball
mkdir -p "$install_dir"
rm -rf "$install_path"
cd "$(mktemp -d)"
if [ "$(get_ext)" = "tar.zst" ] && ! tar_supports_zstd; then
zstd -d -c "$cache_file" | tar -xf -
else
tar -xf "$cache_file"
fi
mv mise/bin/mise "$install_path"
info "mise: installed successfully to $install_path"
mv mise/bin/mise "$install_path"
info "mise: installed successfully to $install_path"
}

after_finish_help() {
case "${SHELL:-}" in
*/zsh)
info "mise: run the following to activate mise in your shell:"
info "echo \"eval \\\"\\\$($install_path activate zsh)\\\"\" >> \"${ZDOTDIR-$HOME}/.zshrc\""
info ""
info "mise: run \`mise doctor\` to verify this is setup correctly"
;;
*/bash)
info "mise: run the following to activate mise in your shell:"
info "echo \"eval \\\"\\\$($install_path activate bash)\\\"\" >> ~/.bashrc"
info ""
info "mise: run \`mise doctor\` to verify this is setup correctly"
;;
*/fish)
info "mise: run the following to activate mise in your shell:"
info "echo \"$install_path activate fish | source\" >> ~/.config/fish/config.fish"
info ""
info "mise: run \`mise doctor\` to verify this is setup correctly"
;;
*)
info "mise: run \`$install_path --help\` to get started"
;;
esac
case "${SHELL:-}" in
*/zsh)
info "mise: run the following to activate mise in your shell:"
info "echo \"eval \\\"\\\$($install_path activate zsh)\\\"\" >> \"${ZDOTDIR-$HOME}/.zshrc\""
info ""
info "mise: run \`mise doctor\` to verify this is setup correctly"
;;
*/bash)
info "mise: run the following to activate mise in your shell:"
info "echo \"eval \\\"\\\$($install_path activate bash)\\\"\" >> ~/.bashrc"
info ""
info "mise: run \`mise doctor\` to verify this is setup correctly"
;;
*/fish)
info "mise: run the following to activate mise in your shell:"
info "echo \"$install_path activate fish | source\" >> ~/.config/fish/config.fish"
info ""
info "mise: run \`mise doctor\` to verify this is setup correctly"
;;
*)
info "mise: run \`$install_path --help\` to get started"
;;
esac
}

install_mise
Expand Down
Loading