diff --git a/bin/download b/bin/download index c8a1fa3..5d5e6b0 100755 --- a/bin/download +++ b/bin/download @@ -11,4 +11,4 @@ source "${plugin_dir}/lib/utils.bash" mkdir -p "$ASDF_DOWNLOAD_PATH" # Download tar.gz file to the download directory -download_release "$ASDF_INSTALL_VERSION" $(release_file $ASDF_DOWNLOAD_PATH) +download_release "$ASDF_INSTALL_VERSION" "$(release_file $ASDF_DOWNLOAD_PATH)" diff --git a/bin/latest-stable b/bin/latest-stable index 33401f7..3065a6b 100755 --- a/bin/latest-stable +++ b/bin/latest-stable @@ -23,7 +23,7 @@ printf "redirect url: %s\n" "$redirect_url" >&2 if [[ "$redirect_url" == "$GH_REPO/releases" ]]; then version="$(list_all_versions | sort_versions | tail -n1 | xargs echo)" else - version="$(printf "%s\n" "$redirect_url" | sed 's|.*/tag/v\{0,1\}||' | sed -E $REPLACE_RELEASE_REGEX)" + version="$(printf "%s\n" "$redirect_url" | sed 's|.*/tag/v\{0,1\}||' | sed -E "$REPLACE_RELEASE_REGEX")" fi printf "%s\n" "$version" diff --git a/lib/utils.bash b/lib/utils.bash index 5c5a519..fb9c9ca 100644 --- a/lib/utils.bash +++ b/lib/utils.bash @@ -16,15 +16,10 @@ escape_slashes() { MAJOR_1_PREFIX='cli/v' MAJOR_2_PREFIX='@biomejs/biome@' -# match either @biomejs/biome@ or cli/v -RELEASE_PREFIX_REGEX='\(@biomejs/biome@\|cli\/v\)' - # match either @biomejs/biome@X.Y.Z or cli/vX.Y.Z RELEASE_REGEX="^\($MAJOR_1_PREFIX\|$MAJOR_2_PREFIX\)[0-9]\+\.[0-9]\+\.[0-9]\+$" REPLACE_RELEASE_REGEX="s/^($(escape_slashes $MAJOR_1_PREFIX)|$(escape_slashes $MAJOR_2_PREFIX))//" -echo $MAJOR_1_PREFIX | sed 's/\//\\\//' - fail() { echo -e "asdf-$TOOL_NAME: $*" exit 1 @@ -42,13 +37,11 @@ sort_versions() { LC_ALL=C sort -t. -k 1,1 -k 2,2n -k 3,3n -k 4,4n -k 5,5n | awk '{print $2}' } - -# @biomejs/biome@[0-9]\+\.[0-9]\+\.[0-9]\+$ list_github_tags() { git ls-remote --tags --refs "$GH_REPO" | grep -o 'refs/tags/.*' | cut -d/ -f3- | - grep -o $RELEASE_REGEX | # Match semantic versioning tags - sed -E $REPLACE_RELEASE_REGEX + grep -o "$RELEASE_REGEX" | # Match semantic versioning tags + sed -E "$REPLACE_RELEASE_REGEX" } list_all_versions() { @@ -76,11 +69,20 @@ release_file() { } download_release() { - local version filename url + local version filename url major_prefix version="$1" filename="$2" - url="$GH_REPO/releases/download/cli/v${version}/biome$(binary_suffix)" + if [[ $version =~ ^2 ]]; then + major_prefix="$MAJOR_2_PREFIX" + elif [[ $version =~ ^1 ]]; then + major_prefix="$MAJOR_1_PREFIX" + else + fail "Unsupported version: $version" + return 1 + fi + + url="$GH_REPO/releases/download/${major_prefix}${version}/biome$(binary_suffix)" echo "* Downloading $TOOL_NAME release $version..." curl "${curl_opts[@]}" -o "$filename" -C - "$url" || fail "Could not download $url" @@ -91,6 +93,10 @@ install_version() { local version="$2" local install_path="${3%/bin}/bin" + if [ "$install_type" != "version" ]; then + fail "asdf-$TOOL_NAME supports release installs only" + fi + ( mkdir -p "$install_path" mv $(release_file $ASDF_DOWNLOAD_PATH) "$install_path/$TOOL_NAME"