/fish/functions/birg.fish

https://github.com/nathanchance/scripts · Fish · 64 lines · 47 code · 13 blank · 4 comment · 5 complexity · 0c426b57efe9d4eadeb08372d858d67f MD5 · raw file

  1. #!/usr/bin/env fish
  2. # SPDX-License-Identifier: MIT
  3. # Copyright (C) 2021 Nathan Chancellor
  4. function birg -d "Install ripgrep from GitHub or build it from source"
  5. # Ensure that all PATH modifications are local to this function (like a subshell)
  6. set -lx PATH $PATH
  7. set repo BurntSushi/ripgrep
  8. set base_url https://github.com/$repo
  9. if test -z "$VERSION"
  10. set VERSION (glr $repo)
  11. end
  12. if test (uname -m) = x86_64
  13. if test -z "$PREFIX"
  14. set PREFIX $USR_FOLDER
  15. end
  16. set stow $PREFIX/stow
  17. set bin $stow/prebuilts/bin
  18. set tar ripgrep-$VERSION-x86_64-unknown-linux-musl.tar.gz
  19. set work_dir (mktemp -d)
  20. pushd $work_dir; or return
  21. header "Installing ripgrep"
  22. crl $base_url/releases/download/$VERSION/$tar | tar -xzf -; or return
  23. cd (string replace '.tar.gz' '' $tar); or return
  24. install -Dm755 rg $bin/rg
  25. install -Dm644 complete/rg.fish $__fish_config_dir/completions/rg.fish
  26. stow -d $stow -R -v prebuilts
  27. set -p PATH (dirname $stow)/bin
  28. cd
  29. rm -rf $work_dir
  30. else
  31. header "Building ripgrep"
  32. if not test -d $HOME/.cargo/bin
  33. irust
  34. end
  35. set -p PATH $HOME/.cargo/bin
  36. set src $SRC_FOLDER/ripgrep/ripgrep-$VERSION
  37. mkdir -p (dirname $src)
  38. if not test -d $src
  39. crl $base_url/archive/$VERSION.tar.gz | tar -C (dirname $src) -xzf -; or return
  40. end
  41. pushd $src; or return
  42. rm -rf target
  43. cargo build --release --features pcre2; or return
  44. cargo install --force --path .; or return
  45. set out (find $src/target -name ripgrep-stamp -print0 | xargs -0 ls -t | head -1 | xargs dirname)
  46. install -Dm644 $out/rg.fish $__fish_config_dir/completions/rg.fish
  47. end
  48. command -v rg
  49. rg --version
  50. popd
  51. end