From ec0dd1de4563eef8ec16a68af0bcd9f8d54e74ef Mon Sep 17 00:00:00 2001 From: jdx <216188+jdx@users.noreply.github.com> Date: Fri, 17 Jan 2025 10:48:22 -0600 Subject: [PATCH 1/2] fix: completions for `mise use` Fixes #4145 --- mise.usage.kdl | 4 ++-- src/assets/mise-extra.usage.kdl | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/mise.usage.kdl b/mise.usage.kdl index 4a26cc9124..f1688e4f0a 100644 --- a/mise.usage.kdl +++ b/mise.usage.kdl @@ -1199,9 +1199,9 @@ case $cur in done ;; esac -"# +"""# -complete "installed_tool@version" run=r#" +complete "installed_tool@version" run=#""" cur="{{words[CURRENT]}}" case $cur in *@*) diff --git a/src/assets/mise-extra.usage.kdl b/src/assets/mise-extra.usage.kdl index dc2823ae73..223b140ea0 100644 --- a/src/assets/mise-extra.usage.kdl +++ b/src/assets/mise-extra.usage.kdl @@ -42,9 +42,9 @@ case $cur in done ;; esac -"# +"""# -complete "installed_tool@version" run=r#" +complete "installed_tool@version" run=#""" cur="{{words[CURRENT]}}" case $cur in *@*) From b0800f550f25077adc55b2c32b80aaafccdfdc19 Mon Sep 17 00:00:00 2001 From: jdx <216188+jdx@users.noreply.github.com> Date: Fri, 17 Jan 2025 17:43:18 -0600 Subject: [PATCH 2/2] fix: whitespace in mise.run script --- packaging/standalone/install.envsubst | 308 +++++++++++++------------- 1 file changed, 154 insertions(+), 154 deletions(-) diff --git a/packaging/standalone/install.envsubst b/packaging/standalone/install.envsubst index 87e8fb8ec1..8253065c0b 100644 --- a/packaging/standalone/install.envsubst +++ b/packaging/standalone/install.envsubst @@ -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() { @@ -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 @@ -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