#!/bin/bash cd `dirname $BASH_SOURCE` fzf_base=`pwd` # ruby executable echo -n "Checking Ruby executable ... " ruby=`which ruby` if [ $? -ne 0 ]; then echo "ruby executable not found!" exit 1 fi echo "OK" # Curses-support echo -n "Checking Curses support ... " /usr/bin/env ruby -e "begin; require 'curses'; rescue Exception; exit 1; end" if [ $? -ne 0 ]; then echo "Your ruby does not support 'curses'" exit 1 fi echo "OK" # Ruby version echo -n "Checking Ruby version ... " /usr/bin/env ruby -e 'exit RUBY_VERSION >= "1.9"' if [ $? -eq 0 ]; then echo ">= 1.9" fzf_cmd="$ruby --disable-gems $fzf_base/fzf" else echo "< 1.9" fzf_cmd="$ruby $fzf_base/fzf" fi # Auto-completion read -p "Do you want to add auto-completion support? ([y]/n) " -n 1 -r echo [[ ! $REPLY =~ ^[Nn]$ ]] auto_completion=$? echo for shell in bash zsh; do echo -n "Generate ~/.fzf.$shell ... " src=~/.fzf.${shell} fzf_completion="source $fzf_base/fzf-completion.${shell}" if [ $auto_completion -ne 0 ]; then fzf_completion="# $fzf_completion" fi cat > $src << EOF unalias fzf 2> /dev/null fzf() { $fzf_cmd "\$@" } export -f fzf > /dev/null $fzf_completion EOF echo "OK" done echo for shell in bash zsh; do rc=~/.${shell}rc src="source ~/.fzf.${shell}" echo "Update $rc:" echo " - $src" if [ $(grep -F "$src" $rc | wc -l) -gt 0 ]; then echo " - Not added (already being sourced)" else echo $src >> $rc echo " - Added" fi echo done cat << EOF Finished. Reload your .bashrc or .zshrc to take effect. source ~/.bashrc # bash" source ~/.zshrc # zsh" To uninstall fzf, simply remove the added line. EOF