Skip to content

Commit

Permalink
Install ghcup inside the plugin_dir
Browse files Browse the repository at this point in the history
  • Loading branch information
sestrella committed Dec 3, 2023
1 parent 0276816 commit ce7baa0
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 57 deletions.
6 changes: 3 additions & 3 deletions bin/install
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

Expand All @@ -27,5 +27,5 @@ then
plugin_dir=$(dirname "$(dirname "$current_script_path")")
toolname=$(basename "$plugin_dir")

main "${toolname}"
main "${1:-$toolname}"
fi
4 changes: 2 additions & 2 deletions bin/list-all
Original file line number Diff line number Diff line change
Expand Up @@ -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}" ]]
Expand All @@ -16,5 +16,5 @@ then
plugin_dir=$(dirname "$(dirname "$current_script_path")")
toolname=$(basename "$plugin_dir")

main "${toolname}"
main "${1:-$toolname}"
fi
10 changes: 7 additions & 3 deletions lib/utils.sh
100644 → 100755
Original file line number Diff line number Diff line change
@@ -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
}
40 changes: 14 additions & 26 deletions test/install.bats
Original file line number Diff line number Diff line change
@@ -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}"
Expand Down
48 changes: 25 additions & 23 deletions test/list-all.bats
Original file line number Diff line number Diff line change
@@ -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"
}

0 comments on commit ce7baa0

Please sign in to comment.