# shellcheck shell=bash
# ==========================================================================
#                ____  _ _   _____   __  ______
#                | __ )(_) |_|_   _|__\ \/ / ___|___  _ ____   __
#                |  _ \| | '_ \| |/ _ \  / |   / _ \| '_ \ \ / /
#                | |_) | | |_) | |  __//  \ |__| (_) | | | \ V /
#                |____/|_|_.__/|_|\___/_/\_\____\___/|_| |_|\_/
#
#                          ---  BibTeX Converter  ---
#                   https://www.nntb.no/~dreibh/bibtexconv/
# ==========================================================================
#
# BibTeX Converter
# Copyright (C) 2010-2026 by Thomas Dreibholz
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Contact: thomas.dreibholz@gmail.com


# ###### Bash completion for bibtexconv #####################################
_bibtexconv()
{
   # Based on: https://www.benningtons.net/index.php/bash-completion/
   local cur prev words cword
   if type -t _comp_initialize >/dev/null; then
      _comp_initialize || return
   elif type -t _init_completion >/dev/null; then
      _init_completion || return
   else
      # Manual initialization for older bash completion versions:
      COMPREPLY=()
      cur="${COMP_WORDS[COMP_CWORD]}"
      # shellcheck disable=SC2034
      prev="${COMP_WORDS[COMP_CWORD-1]}"
      # shellcheck disable=SC2034,SC2124
      words="${COMP_WORDS[@]}"
      # shellcheck disable=SC2034
      cword="${COMP_CWORD}"
   fi

   # ====== Parameters ======================================================
   if [ "${cword}" -le 1 ] ; then
      # BibTeX file names:
      _filedir '@(bib)'
      return
   else
      case "${prev}" in
         #  ====== BibTeX file ==============================================
         -B | --export-to-bibtex)
            _filedir '@(bib)'
            return
            ;;
         #  ====== XML file =================================================
         -X | --export-to-xml)
            _filedir '@(xml)'
            return
            ;;
         #  ====== Generic file or directory ================================
         -b | --export-to-separate-bibtexs | \
         -x | --export-to-separate-xmls)
            _filedir '@(bib)'
            return
            ;;
         #  ====== Directory ================================================
         -D | --store-downloads)
            _filedir -d
            return
            ;;
         #  ====== Generic value ============================================
         -s | --nbsp      | \
         -l | --linebreak | \
         -m | --mapping)
            return
            ;;
         *)
            if [ "${cword}" -lt 1 ] ; then
               # BibTeX file names:
               _filedir '@(bib)'
               return
            fi
            ;;
      esac
   fi

   # ====== All options =====================================================
   local opts="
-B
--export-to-bibtex
-b
-X
--export-to-xml
-x
--export-to-separate-xmls
-C
--export-to-custom
-D
--store-downloads
-m
--mapping
-s
--nbsp
-l
--linebreak
-n
--non-interactive
-U
--check-urls
-u
--only-check-new-urls
-w
--ignore-updates-for-html
-a
--add-url-command
-i
--skip-notes-with-isbn-and-issn
-I
--add-notes-with-isbn-and-issn
-q
--quiet
-h
--help
-v
--version
"
   # shellcheck disable=SC2207
   COMPREPLY=( $( compgen -W "${opts}" -- "${cur}" ) )
   return 0
}

complete -F _bibtexconv bibtexconv
