From ce7baa09440d1afc42988ff308fa2b78f60da7a0 Mon Sep 17 00:00:00 2001 From: Sebastian Estrella <2049686+sestrella@users.noreply.github.com> Date: Sat, 2 Dec 2023 22:39:25 -0500 Subject: [PATCH] Install ghcup inside the plugin_dir --- bin/install | 6 +++--- bin/list-all | 4 ++-- lib/utils.sh | 10 +++++++--- test/install.bats | 40 ++++++++++++++------------------------ test/list-all.bats | 48 ++++++++++++++++++++++++---------------------- 5 files changed, 51 insertions(+), 57 deletions(-) mode change 100644 => 100755 lib/utils.sh diff --git a/bin/install b/bin/install index a0f92ee..a6e7954 100755 --- a/bin/install +++ b/bin/install @@ -15,9 +15,9 @@ main() { check_ghcup if [[ "${1}" == "ghc" ]] || { [[ "${1}" == "hls" ]] && [[ $(ver "$version") -ge $(ver "1.7") ]]; } then - ghcup install "${1}" "${version}" -i "${path}" + "$(ghcup_bin_dir)/ghcup" install "${1}" "${version}" -i "${path}" else - ghcup install "${1}" "${version}" -i "${path}/bin" + "$(ghcup_bin_dir)/ghcup" install "${1}" "${version}" -i "${path}/bin" fi } @@ -27,5 +27,5 @@ then plugin_dir=$(dirname "$(dirname "$current_script_path")") toolname=$(basename "$plugin_dir") - main "${toolname}" + main "${1:-$toolname}" fi diff --git a/bin/list-all b/bin/list-all index 8861179..eb3b2a3 100755 --- a/bin/list-all +++ b/bin/list-all @@ -7,7 +7,7 @@ source "$(dirname "$0")/../lib/utils.sh" main() { check_ghcup - ghcup list -t "${1}" -r 2>/dev/null | awk '{printf $2" "}' + "$(ghcup_bin_dir)/ghcup" list -t "${1}" -r | awk '{printf $2" "}' } if [[ "${BASH_SOURCE[0]}" == "${0}" ]] @@ -16,5 +16,5 @@ then plugin_dir=$(dirname "$(dirname "$current_script_path")") toolname=$(basename "$plugin_dir") - main "${toolname}" + main "${1:-$toolname}" fi diff --git a/lib/utils.sh b/lib/utils.sh old mode 100644 new mode 100755 index b59ed08..b442b0b --- a/lib/utils.sh +++ b/lib/utils.sh @@ -1,10 +1,14 @@ +ghcup_bin_dir() { + echo "$ASDF_PLUGIN_PATH/.ghcup/bin" +} + check_ghcup() { - if ! command -v ghcup &> /dev/null + if ! test -f "$(ghcup_bin_dir)/ghcup" then - echo "GHCup not found, installing..." curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | env \ - BOOTSTRAP_HASKELL_NONINTERACTIVE=1 \ BOOTSTRAP_HASKELL_MINIMAL=1 \ + BOOTSTRAP_HASKELL_NONINTERACTIVE=1 \ + GHCUP_INSTALL_BASE_PREFIX="$ASDF_PLUGIN_PATH" \ sh fi } diff --git a/test/install.bats b/test/install.bats index 3202fb3..f9ebba4 100644 --- a/test/install.bats +++ b/test/install.bats @@ -1,84 +1,72 @@ # vi: ft=bash setup() { - load 'test_helper/bats-assert/load' load 'test_helper/bats-support/load' + load 'test_helper/bats-assert/load' DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" PATH="$DIR/../bin:$PATH" - ASDF_INSTALL_PATH=$(mktemp -dt asdf-XXXX) + export ASDF_PLUGIN_PATH=$(mktemp -dt asdf-plugin-XXXX) + export ASDF_INSTALL_PATH=$(mktemp -dt asdf-XXXX) } teardown() { rm -rf "${ASDF_INSTALL_PATH}" + unset ASDF_INSTALL_PATH + rm -rf "$ASDF_PLUGIN_PATH" + unset ASDF_PLUGIN_PATH } @test "cabal 3.6.2.0" { - install - ASDF_INSTALL_VERSION="3.6.2.0" - main cabal + ASDF_INSTALL_VERSION="3.6.2.0" install cabal run "${ASDF_INSTALL_PATH}/bin/cabal" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" } @test "cabal 3.8.1.0" { - source ./bin/install - ASDF_INSTALL_VERSION="3.8.1.0" - main cabal + ASDF_INSTALL_VERSION="3.8.1.0" install cabal run "${ASDF_INSTALL_PATH}/bin/cabal" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" } @test "ghc 9.2.4" { - source ./bin/install - ASDF_INSTALL_VERSION="9.2.4" - main ghc + ASDF_INSTALL_VERSION="9.2.4" install ghc run "${ASDF_INSTALL_PATH}/bin/ghc" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" } @test "ghc 9.4.2" { - source ./bin/install - ASDF_INSTALL_VERSION="9.4.2" - main ghc + ASDF_INSTALL_VERSION="9.4.2" install ghc run "${ASDF_INSTALL_PATH}/bin/ghc" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" } @test "hls 1.6.1.0" { - source ./bin/install - ASDF_INSTALL_VERSION="1.6.1.0" - main hls + ASDF_INSTALL_VERSION="1.6.1.0" install hls run "${ASDF_INSTALL_PATH}/bin/haskell-language-server-wrapper" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" } @test "hls 1.7.0.0" { - source ./bin/install - ASDF_INSTALL_VERSION="1.7.0.0" - main hls + ASDF_INSTALL_VERSION="1.7.0.0" install hls run "${ASDF_INSTALL_PATH}/bin/haskell-language-server-wrapper" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" } @test "stack 2.5.1" { - source ./bin/install - ASDF_INSTALL_VERSION="2.5.1" - main stack + ASDF_INSTALL_VERSION="2.5.1" install stack run "${ASDF_INSTALL_PATH}/bin/stack" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" } @test "stack 2.7.5" { - source ./bin/install - ASDF_INSTALL_VERSION="2.7.5" - main stack + ASDF_INSTALL_VERSION="2.7.5" install stack run "${ASDF_INSTALL_PATH}/bin/stack" --version assert_success assert_output --partial "${ASDF_INSTALL_VERSION}" diff --git a/test/list-all.bats b/test/list-all.bats index 9e30c4d..84215bb 100644 --- a/test/list-all.bats +++ b/test/list-all.bats @@ -1,36 +1,38 @@ # vi: ft=bash setup() { - load 'test_helper/bats-assert/load' load 'test_helper/bats-support/load' + load 'test_helper/bats-assert/load' DIR="$( cd "$( dirname "$BATS_TEST_FILENAME" )" >/dev/null 2>&1 && pwd )" PATH="$DIR/../bin:$PATH" + export ASDF_PLUGIN_PATH=$(mktemp -dt asdf-plugin-XXXX) +} + +teardown() { + rm -rf "$ASDF_PLUGIN_PATH" + unset ASDF_PLUGIN_PATH } @test "cabal" { - list-all - run main cabal + run list-all cabal assert_success assert_output --partial "3.8.1.0" } -# @test "ghc" { -# source ./bin/list-all -# run main ghc -# assert_success -# assert_output --partial "9.4.2" -# } -# -# @test "hls" { -# source ./bin/list-all -# run main hls -# assert_success -# assert_output --partial "1.7.0.0" -# } -# -# @test "stack" { -# source ./bin/list-all -# run main stack -# assert_success -# assert_output --partial "2.7.5" -# } +@test "ghc" { + run list-all ghc + assert_success + assert_output --partial "9.4.2" +} + +@test "hls" { + run list-all hls + assert_success + assert_output --partial "1.7.0.0" +} + +@test "stack" { + run list-all stack + assert_success + assert_output --partial "2.7.5" +}