From da69b50eb573ecd74d9206a44e258602639749f3 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Tue, 30 Jul 2019 22:30:29 +0200 Subject: [PATCH 01/10] issue #29 - Make Travis test on macOS. And mercy be with us all. - Use `apt` and `homebrew` addons for simplicity and build speed (?). - Make build matrix explicit: can't handle installing different versions of fish otherwise. --- .travis.yml | 65 ++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/.travis.yml b/.travis.yml index c227e31..48eb584 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,28 +1,51 @@ -env: - - FISH=release-2 - - FISH=release-3 - matrix: - allow_failures: - - env: FISH=release-3 + include: + - os: linux + env: FISH=2 + addons: + apt: + sources: + - sourceline: "ppa:fish-shell/release-2" + packages: + - fish + - os: linux + env: FISH=3 + addons: + apt: + sources: + - sourceline: "ppa:fish-shell/release-3" + packages: + - fish + - os: osx + env: FISH=2 + addons: + homebrew: + packages: + - 'https://raw.githubusercontent.com/Homebrew/homebrew-core/799fef191cd2beac06930e1d1a8e7f308bd0f4b1/Formula/fish.rb' # 2.7.1 + update: true # TODO: build should be green without, but isn't + - os: osx + env: FISH=3 + addons: + homebrew: + packages: + - fish # --> latest, i.e. >=3.0.2 + update: true # TODO: build should be green without, but isn't + allow_failures: + - env: FISH=3 -sudo: required before_install: - - sudo add-apt-repository -y ppa:fish-shell/${FISH} - - sudo apt-get update - - sudo apt-get -y install fish - - curl -s "https://get.sdkman.io" | bash - - bash test/prepare_tests.sh + - fish --version + - curl -s "https://get.sdkman.io" | bash + - bash test/prepare_tests.sh install: - - mkdir -p "${HOME}"/.config/fish/{completions,conf.d,functions} - - cp completions/* "${HOME}"/.config/fish/completions/ - - cp conf.d/* "${HOME}"/.config/fish/conf.d/ - - cp functions/* "${HOME}"/.config/fish/functions/ + - mkdir -p "${HOME}"/.config/fish/{completions,conf.d,functions} + - cp completions/* "${HOME}"/.config/fish/completions/ + - cp conf.d/* "${HOME}"/.config/fish/conf.d/ + - cp functions/* "${HOME}"/.config/fish/functions/ script: - - ruby test/completion.rb - - fish test/wrapper.fish - - fish test/reinitialize.fish - - bash -c "sdk install crash 1.3.0; sdk uninstall crash 1.3.0"; fish test/10_zombies_new.fish - + - ruby test/completion.rb + - fish test/wrapper.fish + - fish test/reinitialize.fish + - bash -c "sdk install crash 1.3.0; sdk uninstall crash 1.3.0"; fish test/10_zombies_new.fish From b1887e4170cf3b3b67dba255e291ea9995ffc195 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Wed, 31 Jul 2019 01:58:29 +0200 Subject: [PATCH 02/10] issue #29 - Add macOS alternative for `sha256sum`. --- test/wrapper.fish | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/test/wrapper.fish b/test/wrapper.fish index bd95ac0..108bfce 100644 --- a/test/wrapper.fish +++ b/test/wrapper.fish @@ -15,20 +15,26 @@ set check_count (math "3 * $test_count") set sdk_init "$HOME/.sdkman/bin/sdkman-init.sh" -function checksum -a file - sha256sum $file | cut -d " " -f 1 +if [ (uname) = "Linux" ] + function checksum -a file + sha256sum $file | cut -d " " -f 1 + end +else # assume macOS + function checksum -a file + shasum -a 256 $file | cut -d " " -f 1 + end end echo "Testing the sdk wrapper" set failures 0 for sdk_cmd in $test_commands echo " Testing '$sdk_cmd'" - bash -c "source \"$sdk_init\" && $sdk_cmd > sout_bash; - echo \"\$?\" > status_bash; + bash -c "source \"$sdk_init\" && $sdk_cmd > sout_bash; + echo \"\$?\" > status_bash; echo \"\$PATH\" > path_bash; echo \"\$ANT_HOME\" > anthome_bash" - fish -c "$sdk_cmd > sout_fish; - echo \"\$status\" > status_fish; + fish -c "$sdk_cmd > sout_fish; + echo \"\$status\" > status_fish; echo \"\$PATH\" > path_fish; echo \"\$ANT_HOME\" > anthome_fish" @@ -52,4 +58,4 @@ rm {sout,status,path}_{bash,fish} echo "Ran $test_count commands with 3 checks each." echo "$failures/$check_count checks failed." -exit (math $failures != 0) \ No newline at end of file +exit (math $failures != 0) From 12f7d3de776402217e452900126145db564087a2 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Wed, 31 Jul 2019 02:09:47 +0200 Subject: [PATCH 03/10] issue #29: Replace `stat` with something more portable. cf. https://unix.stackexchange.com/a/7732/17409 --- conf.d/sdk.fish | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/conf.d/sdk.fish b/conf.d/sdk.fish index aeb54ea..d8b9a37 100644 --- a/conf.d/sdk.fish +++ b/conf.d/sdk.fish @@ -15,11 +15,11 @@ if not test -f "$__fish_sdkman_init" exit 0 end -# Hack for issue #19: +# Hack for issue #19: # Create version of sdkman-init that doesn't export any environment variables. # Refresh if sdkman-init changed. if begin not test -f "$__fish_sdkman_noexport_init"; - or env test "$__fish_sdkman_init" -nt "$__fish_sdkman_noexport_init" + or env test "$__fish_sdkman_init" -nt "$__fish_sdkman_noexport_init" end mkdir -p (dirname $__fish_sdkman_noexport_init) sed -e 's/^\(\s*\).*\(export\|to_path\).*$/\1:/g' "$__fish_sdkman_init" \ @@ -31,15 +31,15 @@ end # Returns the same status code as the given command. function __fish_sdkman_run_in_bash # We need to leave stdin and stdout of sdk free for user interaction. - # So, pipe relevant environment variables (which might have changed) + # So, pipe relevant environment variables (which might have changed) # through a file. # But since now getting the exit code of sdk itself is a hassle, # pipe it as well. # # TODO: Can somebody get this to work without the overhead of a file? set pipe (mktemp) - bash -c "$argv[1]; - echo -e \"\$?\" > $pipe; + bash -c "$argv[1]; + echo -e \"\$?\" > $pipe; env | grep -e '^SDKMAN_\|^PATH' >> $pipe; env | grep -i -E \"^(`echo \${SDKMAN_CANDIDATES_CSV} | sed 's/,/|/g'`)_HOME\" >> $pipe; echo \"SDKMAN_OFFLINE_MODE=\${SDKMAN_OFFLINE_MODE}\" >> $pipe" # it's not an environment variable! @@ -48,14 +48,14 @@ function __fish_sdkman_run_in_bash set sdkStatus $bashDump[1] set bashEnv $bashDump[2..-1] - # If SDKMAN! succeeded, copy relevant environment variables + # If SDKMAN! succeeded, copy relevant environment variables # to the current shell (they might have changed) if [ $sdkStatus = 0 ] for line in $bashEnv set parts (string split "=" $line) set var $parts[1] set value (string join "=" $parts[2..-1]) - + switch "$var" case "PATH" # Special treatment: need fish list instead @@ -74,10 +74,10 @@ function __fish_sdkman_run_in_bash return $sdkStatus end -# If this is a subshell of a(n initialized) fish owned by the same user, -# no initialization necessary. +# If this is a subshell of a(n initialized) fish owned by the same user, +# no initialization necessary. # Otherwise: -if not set -q SDKMAN_DIR; or test (stat -c "%U" $SDKMAN_DIR) != (whoami) +if not set -q SDKMAN_DIR; or test (ls -ld "$SDKMAN_DIR" | awk '{print $3}') != (whoami) __fish_sdkman_run_in_bash "source $__fish_sdkman_init" end From 7faecfd154935093ea809f22d0ca15569769ff8a Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Tue, 5 Nov 2019 05:05:20 +0100 Subject: [PATCH 04/10] issue #29: Avoid GNU-specific `find`. --- .travis.yml | 4 +- completions/sdk.fish | 124 +++++++++++++++++++++---------------------- 2 files changed, 64 insertions(+), 64 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4db3e3d..948b523 100644 --- a/.travis.yml +++ b/.travis.yml @@ -47,5 +47,5 @@ script: - ruby test/completion.rb - fish test/wrapper.fish - fish test/reinitialize.fish - - bash -c "source ${HOME}/.sdkman/bin/sdkman-init.sh && sdk install crash 1.3.0 && sdk uninstall crash 1.3.0" && fish test/10_zombies_new.fish - - bash -c "rm -rf ~/.sdkman && sed -i 's/^.*\(sdkman\|SDKMAN\).*$//g' ~/.bashrc && echo 'SDKMAN uninstalled'" && fish -c "echo 'y' | sdk" && fish -c "sdk version" + - bash -c "source \"${HOME}/.sdkman/bin/sdkman-init.sh\" && sdk install crash 1.3.0 && sdk uninstall crash 1.3.0" && fish test/10_zombies_new.fish + - bash -c "rm -rf \"${HOME}/.sdkman\" && sed -i 's/^.*\(sdkman\|SDKMAN\).*$//g' \"${HOME}/.bashrc\" && echo 'SDKMAN uninstalled'" && fish -c "echo 'y' | sdk" && fish -c "sdk version" diff --git a/completions/sdk.fish b/completions/sdk.fish index 4a9cd13..bd8b602 100644 --- a/completions/sdk.fish +++ b/completions/sdk.fish @@ -6,7 +6,7 @@ # Guard: SDKMAN! needs to be installed if not test -f "$HOME/.sdkman/bin/sdkman-init.sh" - exit 0 + exit 0 end # # # # # # @@ -14,45 +14,45 @@ end # # # # # # # Test if there is no command -function __fish_sdkman_no_command - set cmd (commandline -opc) +function __fish_sdkman_no_command + set cmd (commandline -opc) - if [ (count $cmd) -eq 1 ] - return 0 - end - return 1 + if [ (count $cmd) -eq 1 ] + return 0 + end + return 1 end # Test if the main command matches one of the parameters function __fish_sdkman_using_command - set cmd (commandline -opc) + set cmd (commandline -opc) - if [ (count $cmd) -eq 2 ] - if contains $cmd[2] $argv - return 0 + if [ (count $cmd) -eq 2 ] + if contains $cmd[2] $argv + return 0 + end end - end - return 1 + return 1 end function __fish_sdkman_specifying_candidate - set cmd (commandline -opc) + set cmd (commandline -opc) - if [ (count $cmd) -eq 3 ] # currently, sdk does not support multiple versions - if contains $cmd[2] $argv ] - return 0 + if [ (count $cmd) -eq 3 ] # currently, sdk does not support multiple versions + if contains $cmd[2] $argv ] + return 0 + end end - end - return 1 + return 1 end function __fish_sdkman_command_has_enough_parameters - set cmd (commandline -opc) - - if [ (count $cmd) -ge (math $argv[1] + 2) ]; and contains $cmd[2] $argv[2..-1] - return 0 - end - return 1 + set cmd (commandline -opc) + + if [ (count $cmd) -ge (math $argv[1] + 2) ]; and contains $cmd[2] $argv[2..-1] + return 0 + end + return 1 end # # # # # # @@ -60,22 +60,22 @@ end # # # # # # function __fish_sdkman_candidates - cat "$HOME"/.sdkman/var/candidates | tr ',' '\n' + cat "$HOME"/.sdkman/var/candidates | tr ',' '\n' end function __fish_sdkman_candidates_with_versions - set regexpHome (string replace -a '/' '\\/' "$HOME/") - find "$HOME"/.sdkman/candidates/ -name '*current*' -printf "%h\n" \ - | sed -e "s/$regexpHome//" \ - | cut -d '/' -f 3 \ - | sort -u + set regexpHome (string replace -a '/' '\\/' "$HOME/") + + find "$HOME"/.sdkman/candidates/ -mindepth 2 -maxdepth 2 -name '*current' \ + | awk -F '/' '{ print $(NF-1) }' \ + | sort -u end function __fish_sdkman_installed_versions - set cmd (commandline -opc) - if [ -d "$HOME"/.sdkman/candidates/$cmd[3]/current ] - ls -v1 "$HOME"/.sdkman/candidates/$cmd[3] | grep -v current - end + set cmd (commandline -opc) + if [ -d "$HOME"/.sdkman/candidates/$cmd[3]/current ] + ls -v1 "$HOME"/.sdkman/candidates/$cmd[3] | grep -v current + end end # # # # # # @@ -87,26 +87,26 @@ complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'i install' \ -d 'Install new version' complete -c sdk -f -n '__fish_sdkman_using_command i install' \ - -a "(__fish_sdkman_candidates)" + -a "(__fish_sdkman_candidates)" complete -c sdk -f -n '__fish_sdkman_specifying_candidate i install' \ # TODO complete available versions --> #4 -a 'a.b.c' \ - -d "version list unavailable" + -d "version list unavailable" complete -c sdk -f -n '__fish_sdkman_specifying_candidate i install' \ -a 'x.y.z' \ - -d "Add your own; specify path!" + -d "Add your own; specify path!" # Implicit: complete files as fourth parameter -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 3 i install' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 3 i install' # block # uninstall complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'rm uninstall' -d 'Uninstall version' complete -c sdk -f -n '__fish_sdkman_using_command rm uninstall' \ - -a "(__fish_sdkman_candidates_with_versions)" + -a "(__fish_sdkman_candidates_with_versions)" complete -c sdk -f -n '__fish_sdkman_specifying_candidate rm uninstall' \ - -a "(__fish_sdkman_installed_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 rm uninstall' + -a "(__fish_sdkman_installed_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 rm uninstall' # block # list @@ -114,19 +114,19 @@ complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'ls list' \ -d 'List versions' complete -c sdk -f -n '__fish_sdkman_using_command ls list' \ - -a "(__fish_sdkman_candidates)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ls list' - # block + -a "(__fish_sdkman_candidates)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ls list' + # block # use complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'u use' \ -d 'Use specific version' complete -c sdk -f -n '__fish_sdkman_using_command u use' \ - -a "(__fish_sdkman_candidates_with_versions)" + -a "(__fish_sdkman_candidates_with_versions)" complete -c sdk -f -n '__fish_sdkman_specifying_candidate u use' \ - -a "(__fish_sdkman_installed_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 u use' + -a "(__fish_sdkman_installed_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 u use' # block # default @@ -134,10 +134,10 @@ complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'd default' \ -d 'Set default version' complete -c sdk -f -n '__fish_sdkman_using_command d default' \ - -a "(__fish_sdkman_candidates_with_versions)" + -a "(__fish_sdkman_candidates_with_versions)" complete -c sdk -f -n '__fish_sdkman_specifying_candidate d default' \ - -a "(__fish_sdkman_installed_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 d default' + -a "(__fish_sdkman_installed_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 2 d default' # block # current @@ -145,8 +145,8 @@ complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'c current' \ -d 'Display current version' complete -c sdk -f -n '__fish_sdkman_using_command c current' \ - -a "(__fish_sdkman_candidates)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 c current' + -a "(__fish_sdkman_candidates)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 c current' # block # upgrade @@ -154,29 +154,29 @@ complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'ug upgrade' \ -d 'Display what is outdated' complete -c sdk -f -n '__fish_sdkman_using_command ug upgrade' \ - -a "(__fish_sdkman_candidates_with_versions)" -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ug upgrade' + -a "(__fish_sdkman_candidates_with_versions)" +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 ug upgrade' # block # version complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'v version' \ -d 'Display version' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 v version' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 v version' # block # broadcast complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'b broadcast' \ -d 'Display broadcast message' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 b broadcast' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 b broadcast' # block # help complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'h help' \ -d 'Display help message' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 h help' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 h help' # block # offline @@ -189,7 +189,7 @@ complete -c sdk -f -n '__fish_sdkman_using_command offline' \ complete -c sdk -f -n '__fish_sdkman_using_command offline' \ -a 'disable' \ -d 'Turn on all features' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 offline' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 offline' # block # selfupdate @@ -199,14 +199,14 @@ complete -c sdk -f -n '__fish_sdkman_no_command' \ complete -c sdk -f -n '__fish_sdkman_using_command selfupdate' \ -a 'force' \ -d 'Force re-install of current version' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 selfupdate' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 selfupdate' # block # update complete -c sdk -f -n '__fish_sdkman_no_command' \ -a 'update' \ -d 'Reload the candidate list' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 update' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 0 update' # block # flush @@ -222,5 +222,5 @@ complete -c sdk -f -n '__fish_sdkman_using_command flush' \ complete -c sdk -f -n '__fish_sdkman_using_command flush' \ -a 'temp' \ -d 'Clear installation prep folder' -complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 flush' +complete -c sdk -f -n '__fish_sdkman_command_has_enough_parameters 1 flush' # block From 0d42de6d9c99c3d1cf945efebc6e0965e57ad534 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Tue, 5 Nov 2019 05:42:20 +0100 Subject: [PATCH 05/10] issue #29: Local Homebrew formula for fish 2 --- .travis.yml | 2 +- test/Homebrew-Formula-fish-2.7.1.rb | 60 +++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 test/Homebrew-Formula-fish-2.7.1.rb diff --git a/.travis.yml b/.travis.yml index 948b523..ee0ed9f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,7 +21,7 @@ matrix: addons: homebrew: packages: - - 'https://raw.githubusercontent.com/Homebrew/homebrew-core/799fef191cd2beac06930e1d1a8e7f308bd0f4b1/Formula/fish.rb' # 2.7.1 + - 'test/Homebrew-Formula-fish-2.7.1.rb' update: true # TODO: build should be green without, but isn't - os: osx env: FISH=3 diff --git a/test/Homebrew-Formula-fish-2.7.1.rb b/test/Homebrew-Formula-fish-2.7.1.rb new file mode 100644 index 0000000..3a463db --- /dev/null +++ b/test/Homebrew-Formula-fish-2.7.1.rb @@ -0,0 +1,60 @@ +class HomebrewFormulaFish271 < Formula + desc "User-friendly command-line shell for UNIX-like operating systems" + homepage "https://fishshell.com" + url "https://github.com/fish-shell/fish-shell/releases/download/2.7.1/fish-2.7.1.tar.gz" + mirror "https://fishshell.com/files/2.7.1/fish-2.7.1.tar.gz" + sha256 "e42bb19c7586356905a58578190be792df960fa81de35effb1ca5a5a981f0c5a" + + bottle do + sha256 "affac16a396410a500241266dbbbd8752562c9b800d9e4f2ef8de279c6fdb6aa" => :high_sierra + sha256 "335538a7ea7f9613474f7321af0a1d519b61b0fc4be97a1744a7ea7bef7ff7e3" => :sierra + sha256 "463cfa8edc0603761f25e0ba4e49524f69a1d856263d370d1de5fb8698dd5ccf" => :el_capitan + end + + head do + url "https://github.com/fish-shell/fish-shell.git", :shallow => false + + depends_on "autoconf" => :build + depends_on "automake" => :build + depends_on "doxygen" => :build + end + + depends_on "pcre2" + + def install + system "autoreconf", "--no-recursive" if build.head? + + # In Homebrew's 'superenv' sed's path will be incompatible, so + # the correct path is passed into configure here. + args = %W[ + --prefix=#{prefix} + --with-extra-functionsdir=#{HOMEBREW_PREFIX}/share/fish/vendor_functions.d + --with-extra-completionsdir=#{HOMEBREW_PREFIX}/share/fish/vendor_completions.d + --with-extra-confdir=#{HOMEBREW_PREFIX}/share/fish/vendor_conf.d + SED=/usr/bin/sed + ] + system "./configure", *args + system "make", "install" + end + + def caveats; <<~EOS + You will need to add: + #{HOMEBREW_PREFIX}/bin/fish + to /etc/shells. + + Then run: + chsh -s #{HOMEBREW_PREFIX}/bin/fish + to make fish your default shell. + EOS + end + + def post_install + (pkgshare/"vendor_functions.d").mkpath + (pkgshare/"vendor_completions.d").mkpath + (pkgshare/"vendor_conf.d").mkpath + end + + test do + system "#{bin}/fish", "-c", "echo" + end +end From 7e9d8a7031df314a1f2b6e0b454f78c0579c8969 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Tue, 5 Nov 2019 06:04:52 +0100 Subject: [PATCH 06/10] issue #29: Fix installation test. --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ee0ed9f..9886236 100644 --- a/.travis.yml +++ b/.travis.yml @@ -48,4 +48,4 @@ script: - fish test/wrapper.fish - fish test/reinitialize.fish - bash -c "source \"${HOME}/.sdkman/bin/sdkman-init.sh\" && sdk install crash 1.3.0 && sdk uninstall crash 1.3.0" && fish test/10_zombies_new.fish - - bash -c "rm -rf \"${HOME}/.sdkman\" && sed -i 's/^.*\(sdkman\|SDKMAN\).*$//g' \"${HOME}/.bashrc\" && echo 'SDKMAN uninstalled'" && fish -c "echo 'y' | sdk" && fish -c "sdk version" + - bash -c "rm -rf \"${HOME}/.sdkman\" && sed -i'.bak' -e 's/^.*\(sdkman\|SDKMAN\).*$//g' \"${HOME}/.bashrc\" && echo 'SDKMAN uninstalled'" && fish -c "echo 'y' | sdk" && fish -c "sdk version" From ac99d1464c6e8a6ce3c1209a858c08b7bef356c9 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Wed, 6 Nov 2019 20:52:07 +0100 Subject: [PATCH 07/10] Final macOS incompatibility fix. Closes issue #29. --- .editorconfig | 3 +++ .travis.yml | 5 ++--- completions/sdk.fish | 8 ++++---- conf.d/sdk.fish | 6 +++--- test/install_uninstall_candidate.sh | 5 +++++ test/remove_sdkman.sh | 5 +++++ 6 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 test/install_uninstall_candidate.sh create mode 100644 test/remove_sdkman.sh diff --git a/.editorconfig b/.editorconfig index 4110381..5f11cc6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -8,5 +8,8 @@ indent_size = 4 trim_trailing_whitespace = true insert_final_newline = true +[*.{yaml,yml}] +indent_size = 2 + [*.md] trim_trailing_whitespace = false diff --git a/.travis.yml b/.travis.yml index 9886236..35aa2f9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -31,7 +31,6 @@ matrix: - fish # --> latest, i.e. >=3.0.2 update: true # TODO: build should be green without, but isn't -sudo: required before_install: - curl -s "https://get.sdkman.io" | bash - bash test/prepare_tests.sh @@ -47,5 +46,5 @@ script: - ruby test/completion.rb - fish test/wrapper.fish - fish test/reinitialize.fish - - bash -c "source \"${HOME}/.sdkman/bin/sdkman-init.sh\" && sdk install crash 1.3.0 && sdk uninstall crash 1.3.0" && fish test/10_zombies_new.fish - - bash -c "rm -rf \"${HOME}/.sdkman\" && sed -i'.bak' -e 's/^.*\(sdkman\|SDKMAN\).*$//g' \"${HOME}/.bashrc\" && echo 'SDKMAN uninstalled'" && fish -c "echo 'y' | sdk" && fish -c "sdk version" + - bash test/install_uninstall_candidate.sh > /dev/null && fish test/10_zombies_new.fish + - bash test/remove_sdkman.sh > /dev/null && fish -c "echo 'y' | sdk" > /dev/null && fish -c "sdk version" diff --git a/completions/sdk.fish b/completions/sdk.fish index bd8b602..17fcb7e 100644 --- a/completions/sdk.fish +++ b/completions/sdk.fish @@ -28,8 +28,8 @@ function __fish_sdkman_using_command set cmd (commandline -opc) if [ (count $cmd) -eq 2 ] - if contains $cmd[2] $argv - return 0 + if contains $cmd[2] $argv + return 0 end end return 1 @@ -39,8 +39,8 @@ function __fish_sdkman_specifying_candidate set cmd (commandline -opc) if [ (count $cmd) -eq 3 ] # currently, sdk does not support multiple versions - if contains $cmd[2] $argv ] - return 0 + if contains $cmd[2] $argv + return 0 end end return 1 diff --git a/conf.d/sdk.fish b/conf.d/sdk.fish index ad7f981..507b212 100644 --- a/conf.d/sdk.fish +++ b/conf.d/sdk.fish @@ -22,8 +22,8 @@ if begin not test -f "$__fish_sdkman_noexport_init"; or env test "$__fish_sdkman_init" -nt "$__fish_sdkman_noexport_init" end mkdir -p (dirname $__fish_sdkman_noexport_init) - sed -e 's/^\(\s*\).*\(export\|to_path\).*$/\1:/g' "$__fish_sdkman_init" \ - > $__fish_sdkman_noexport_init + sed -E -e 's/^(\s*).*(export|to_path).*$/\1:/g' "$__fish_sdkman_init" \ + > "$__fish_sdkman_noexport_init" end # Runs the given command in bash, capturing some side effects @@ -66,7 +66,7 @@ function __fish_sdkman_run_in_bash if test -n value set -gx $var $value # Note: This makes SDKMAN_OFFLINE_MODE an environment variable. - # That gives it the behavariour we _want_! + # That gives it the behaviour we _want_! end end end diff --git a/test/install_uninstall_candidate.sh b/test/install_uninstall_candidate.sh new file mode 100644 index 0000000..c44d3cf --- /dev/null +++ b/test/install_uninstall_candidate.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + + source "${HOME}/.sdkman/bin/sdkman-init.sh" \ +&& sdk install crash 1.3.0 \ +&& sdk uninstall crash 1.3.0 diff --git a/test/remove_sdkman.sh b/test/remove_sdkman.sh new file mode 100644 index 0000000..f8674cb --- /dev/null +++ b/test/remove_sdkman.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + + rm -rf "${HOME}/.sdkman" \ +&& sed -i'.bak' -E -e 's/^.*(sdkman|SDKMAN).*$//g' "${HOME}/.bashrc" \ +&& echo 'SDKMAN! uninstalled' From 745e8441d25d18695106c75623665ef307df9345 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Wed, 6 Nov 2019 21:18:41 +0100 Subject: [PATCH 08/10] Test on Ubuntu 18.04; adapt README. --- .travis.yml | 8 ++++---- README.md | 6 +++++- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index 35aa2f9..57fd501 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,19 +1,19 @@ matrix: include: - - os: linux + - dist: bionic env: FISH=2 addons: apt: sources: - - sourceline: "ppa:fish-shell/release-2" + - ppa:fish-shell/release-2 packages: - fish - - os: linux + - dist: bionic env: FISH=3 addons: apt: sources: - - sourceline: "ppa:fish-shell/release-3" + - ppa:fish-shell/release-3 packages: - fish - os: osx diff --git a/README.md b/README.md index c5ace6f..38e6031 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,11 @@ Makes command `sdk` from [SDKMAN!] usable from fish, including auto-completion. Also adds binaries from installed SDKs to the PATH. -Tested with fish 2.7.1 and 3.0.2, and SDKMAN! 5.7.3. +Version 1.4.0 tested with + + - fish 2.7.1 and 3.0.2, and + - SDKMAN! 5.7.4, on + - Ubuntu 18.04 LTS and macOS 10.13 ## Install From b5bec7bb456a68680e6267520569f0a7fc81d877 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Wed, 6 Nov 2019 21:43:59 +0100 Subject: [PATCH 09/10] Simplify tests. --- .travis.yml | 2 +- test/{10_zombies_new.fish => check_for_path_zombies.fish} | 0 test/install_uninstall_candidate.sh | 5 ----- 3 files changed, 1 insertion(+), 6 deletions(-) rename test/{10_zombies_new.fish => check_for_path_zombies.fish} (100%) delete mode 100644 test/install_uninstall_candidate.sh diff --git a/.travis.yml b/.travis.yml index 57fd501..84b3160 100644 --- a/.travis.yml +++ b/.travis.yml @@ -46,5 +46,5 @@ script: - ruby test/completion.rb - fish test/wrapper.fish - fish test/reinitialize.fish - - bash test/install_uninstall_candidate.sh > /dev/null && fish test/10_zombies_new.fish + - fish -c "sdk install crash 1.3.0; and sdk uninstall crash 1.3.0" > /dev/null && fish test/check_for_path_zombies.fish - bash test/remove_sdkman.sh > /dev/null && fish -c "echo 'y' | sdk" > /dev/null && fish -c "sdk version" diff --git a/test/10_zombies_new.fish b/test/check_for_path_zombies.fish similarity index 100% rename from test/10_zombies_new.fish rename to test/check_for_path_zombies.fish diff --git a/test/install_uninstall_candidate.sh b/test/install_uninstall_candidate.sh deleted file mode 100644 index c44d3cf..0000000 --- a/test/install_uninstall_candidate.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash - - source "${HOME}/.sdkman/bin/sdkman-init.sh" \ -&& sdk install crash 1.3.0 \ -&& sdk uninstall crash 1.3.0 From ed6039e533678605a2f6ec1f0f93d61a57bafbf5 Mon Sep 17 00:00:00 2001 From: Raphael Reitzig <4246780+reitzig@users.noreply.github.com> Date: Wed, 6 Nov 2019 22:05:46 +0100 Subject: [PATCH 10/10] Fix Linux tests: add fish PPAs correctly. --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 84b3160..9ae19b0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ matrix: addons: apt: sources: - - ppa:fish-shell/release-2 + - sourceline: "ppa:fish-shell/release-2" packages: - fish - dist: bionic @@ -13,7 +13,7 @@ matrix: addons: apt: sources: - - ppa:fish-shell/release-3 + - sourceline: "ppa:fish-shell/release-3" packages: - fish - os: osx