propensive / fury-old

A new build tool for JVM languages
Apache License 2.0
413 stars 34 forks source link

Fish PATH explosion #439

Closed jastice closed 5 years ago

jastice commented 5 years ago

Something in the fury install seems to be doing something unsavory to the fish shell path. There are now tons of copies of the fury path on my PATH:

> echo $PATH                                                                                                                                                                                                                        13:38:56
/Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/fury-0.4.0/bin /Users/jast/.nix-profile/bin /Users/jast/.nix-profile/lib/kde4/libexec /nix/var/nix/profiles/default/bin /nix/var/nix/profiles/default /nix/var/nix/profiles/default/lib/kde4/libexec /Users/jast/fury-0.1.0/bin/ /Users/jast/bin/ /Users/jast/.cargo/bin/ /usr/local/bin /usr/bin /bin /usr/sbin /sbin /nix/var/nix/profiles/default/bin/
jastice commented 5 years ago

guessing it's this:

  1. fury installation is appending the fury bit to config.fish on every install
  2. it uses set -Ux which is persistent over sessions, unlike Bash set
    updateFish() {
    if [ -d "$HOME/.config/fish" ] || [ "$SHELL" = "/usr/bin/fish" ]
    then
    RCFILE="$HOME/.config/fish/config.fish"
    if [ -e "$RCFILE" ] || [ "$SHELL" = "/usr/bin/fish" ]
    then
      touch "$RCFILE" && \
      echo "Backing up $RCFILE as $RCFILE.bak" && \
      sed -i.bak -e '/\# Added by Fury/d' "$RCFILE" && \
      echo "set -Ux FURYHOME $DESTINATION" >> "$RCFILE"
      echo "set -Ux fish_user_paths $DESTINATION/bin \$fish_user_paths" >> "$RCFILE"
    fi
    fi
    cp "$DESTINATION/etc/fishrc" "$CONFIG/fish"
    }
propensive commented 5 years ago

Ouch. Thanks for spotting this. (Though I guess it became quite obvious at one point...)

jastice commented 5 years ago

yes at the point I was getting error messages because the path became too long :D

propensive commented 5 years ago

I've attempted to fix this in this PR: https://github.com/propensive/fury/pull/587

Would you be able to test it, @jastice?

propensive commented 5 years ago

Please reopen if it's not fixed!