_sboupgrade() {
  local i cur prev opts cmd
  COMPREPLY=()
  SBO_HOME="$(sboconfig --list | awk -F= '/SBO_HOME=/{print $2}')/repo"
  REPOLIST="$(awk '/NAME/{print $3}' $SBO_HOME/SLACKBUILDS.TXT | tr \\n ' ')"
  cur="${COMP_WORDS[COMP_CWORD]}"
  prev="${COMP_WORDS[COMP_CWORD-1]}"
  cmd=""
  opts=""

  for i in ${COMP_WORDS[@]} ; do
    case "${cmd},${i}" in
      ",$1")
        cmd="sboupgrade"
        ;;
      *)
        ;;
    esac
  done

  case "${cmd}" in
    sboupgrade)
      opts="-h -v -b -c -D -d -e -f -i -j -k -L -p -o -q -r -z -S -X --all --help --version --color --nocolor --wrap --nowrap --build-ignore --noclean --compat32 --distclean --etc-profile --force --noinstall --jobs --pkg_dir --log-dir --norecall --nointeractive --force-reqs --reverse-rebuild --strict-upgrades --batch --dry-run --so-check $REPOLIST"
      if [[ ${cur} == -* || ${COMP_CWORD} -eq 1 ]] ; then
        COMPREPLY=( $(compgen -W "${opts}" -- "${cur}") )
        return 0
      fi

      case "${prev}" in
        -h|--help|-v|--version|--all)
          return 0
          ;;
        -j|--jobs|-k|--pkg-dir|-L|--log-dir)
          COMPREPLY=( $(compgen -W "FALSE" -- "${cur}") )
          return 0
          ;;
        -b|--build-ignore|-c|--noclean|-d|--distclean|-e|--etc-profile|-S|--strict-upgrades|-X|--so-check)
          COMPREPLY=( $(compgen -W "FALSE TRUE" -- "${cur}") )
          return 0
          ;;
        -f|--force|-i|--noinstall|-r|--nointeractive|-z|--force-reqs|-q|--reverse-rebuild|-o|--norecall|--batch|-D|--dry-run|-p|--compat32|--color|--nocolor|--wrap|--nowrap)
          COMPREPLY=( $(compgen -W "$REPOLIST" -- "${cur}") )
          return 0
          ;;
        *)
          return 0
          ;;
      esac
      ;;
    *)
      return 0
    ;;
  esac
}

if [[ "${BASH_VERSINFO[0]}" -eq 4 && "${BASH_VERSINFO[1]}" -ge 4 || "${BASH_VERSINFO[0]}" -gt 4 ]]; then
    complete -F _sboupgrade -o nosort -o bashdefault -o default sboupgrade
else
    complete -F _sboupgrade -o bashdefault -o default sboupgrade
fi
