# shellcheck shell=bash
# ==========================================================================
#                ____  _ _   _____   __  ______
#                | __ )(_) |_|_   _|__\ \/ / ___|___  _ ____   __
#                |  _ \| | '_ \| |/ _ \  / |   / _ \| '_ \ \ / /
#                | |_) | | |_) | |  __//  \ |__| (_) | | | \ V /
#                |____/|_|_.__/|_|\___/_/\_\____\___/|_| |_|\_/
#
#                          ---  BibTeX Converter  ---
#                   https://www.nntb.no/~dreibh/bibtexconv/
# ==========================================================================
#
# BibTeX Converter
# Copyright (C) 2010-2025 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 ======================================================
   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
         ;;
      *)
         # BibTeX file names:
         _filedir '@(bib)'
         return
         ;;
   esac

   # ====== 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
