# title: Ripgrep # homepage: https://github.com/BurntSushi/ripgrep # tagline: a modern drop-in grep replacement # alias: rg # description: | # `rg` is a drop-in replacement for `grep`, that respects `.gitignore` and `.ignore`, has all of the sensible default options you want (colors, numbers, etc) turned on by default, is written in Rust, and simply outperforms grep in every imaginable way. R.I.P. grep. # examples: | # # ```bash # rg # searches recursively, ignoing .git, node_modules, etc # ``` # # ```bash # rg 'function doStuff' # ``` # # ```bash # rg 'doStuff\(.*\)' # ``` set -e set -u # Use the script's first argument or the supplied WEBI_VERSION or '' WEBI_VERSION=${1:-${WEBI_VERSION:-}} # Set a temporary directory, if not already set WEBI_TMP=${WEBI_TMP:-"$(mktemp -d -t webinstall-ripgrep.XXXXXXXX)"} ################### # Get WEBI vars # ################### # The WEBI bootstrap will define these # but each script should be testable in its own right if [ -z "${WEBI_PKG_URL:-}" ]; then release_tab="${WEBI_HOST}/api/releases/ripgrep@${WEBI_VERSION:-}.csv?os=$(uname -s)&arch=$(uname -m)&ext=tar&limit=1" WEBI_CSV=$(curl -fsSL "$release_tab" -H "User-Agent: $(uname -a)") WEBI_CHANNEL=$(echo $WEBI_TAB | cut -d ',' -f 3) if [ "error" == "$WEBI_CHANNEL" ]; then echo "could not find release for ripgrep v${WEBI_VERSION}" exit 1 fi WEBI_VERSION=$(echo $WEBI_TAB | cut -d ',' -f 1) WEBI_PKG_URL=$(echo $WEBI_TAB | cut -d ',' -f 9) WEBI_PKG_FILE="$WEBI_TMP/$(echo $WEBI_PKG_URL | sed s:.*/::)" fi ################### # Install ripgrep # ################### new_rg="${HOME}/.local/bin/rg" # Test for existing version set +e cur_rg="$(command -v rg)" set -e if [ -n "$cur_rg" ]; then cur_ver=$(rg --version | head -n 1 | cut -d ' ' -f 2) if [ "$cur_ver" == "$WEBI_VERSION" ]; then echo "ripgrep v$WEBI_VERSION already installed at $cur_rg" exit 0 elif [ "$cur_rg" != "$new_rg" ]; then echo "WARN: possible conflict with ripgrep v$WEBI_VERSION at $cur_rg" fi fi # TODO move download to the webi bootstrap echo Downloading ripgrep v"${WEBI_VERSION}" from "${WEBI_PKG_URL}" curl -fsSL "${WEBI_PKG_URL}" -o "${WEBI_PKG_FILE}" pushd "${WEBI_TMP}" 2>&1 >/dev/null echo Installing ripgrep v${WEBI_VERSION} as "$new_rg" tar xf "${WEBI_PKG_FILE}" rm "${WEBI_PKG_FILE}" mv ./ripgrep-*/rg "${HOME}/.local/bin/" popd 2>&1 >/dev/null ################### # Update PATH # ################### # TODO get better output from pathman / output the path to add as return to webi bootstrap pathman add "$HOME/.local/bin/" echo "Installed 'rg'" echo ""