#!/bin/bash

remove_line() {
  src=$(readlink "$2")
  if [ $? -eq 0 ]; then
    echo "Remove from $2 ($src):"
  else
    src=$2
    echo "Remove from $2:"
  fi
  echo "  - $1"

  changed=0
  while [ 1 ]; do
    line=$(grep -m1 -nF "$1" "$src") || break
    line_no=$(sed 's/:.*//' <<< "$line")
    echo "    - Remove line ($line)"
    awk -v n=$line_no 'NR == n {next} {print}' "$src" > "$src.bak" &&
      mv "$src.bak" "$src" || break
    changed=1
  done
  [ $changed -eq 0 ] && echo "    - Nothing found"
  echo
}

for shell in bash zsh; do
  rm -f ~/.fzf.${shell}
  remove_line "source ~/.fzf.${shell}" ~/.${shell}rc
done

bind_file=~/.config/fish/functions/fish_user_key_bindings.fish
if [ -f "$bind_file" ]; then
  remove_line "fzf_key_bindings" "$bind_file"
fi

if [ -d ~/.config/fish/functions ]; then
  rm -f ~/.config/fish/functions/fzf.fish

  if [ "$(ls -A ~/.config/fish/functions)" ]; then
    echo "Can't delete non-empty directory: \"~/.config/fish/functions\""
  else
    rmdir ~/.config/fish/functions
  fi
fi

