# calibre Bash Shell Completion
_calibre()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--version -h --help --redirect-console-output --with-library --start-in-tray -v --verbose --update-check"
    pics="@(jpg|jpeg|png|gif|bmp|JPG|JPEG|PNG|GIF|BMP)"

    case "${prev}" in
      --cover )
           _filedir "${pics}"
           return 0
           ;;
    esac

    case "${cur}" in
      --cover )
         _filedir "${pics}"
         return 0
         ;;
      -* )
         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
         return 0
         ;;
      *  )
        _filedir '@(epub|htm|html|xhtml|xhtm|rar|zip|txt|lit|rtf|pdf|prc|mobi|fb2|odt|EPUB|HTM|HTML|XHTML|XHTM|RAR|ZIP|TXT|LIT|RTF|PDF|PRC|MOBI|FB2|ODT)'
        return 0
        ;;
    esac

}
complete -o filenames -F _calibre calibre

_lrf2lrs()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--version -h --help -o --output --dont-output-resources --verbose"
    pics="@(jpg|jpeg|png|gif|bmp|JPG|JPEG|PNG|GIF|BMP)"

    case "${prev}" in
      --cover )
           _filedir "${pics}"
           return 0
           ;;
    esac

    case "${cur}" in
      --cover )
         _filedir "${pics}"
         return 0
         ;;
      -* )
         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
         return 0
         ;;
      *  )
        _filedir '@(lrf|LRF)'
        return 0
        ;;
    esac

}
complete -o filenames -F _lrf2lrs lrf2lrs

_ebook-meta()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--version -h --help -t --title -a --authors --title-sort --author-sort --cover -c --comments -p --publisher --category -s --series -i --index -r --rating --isbn --tags -k --book-producer -l --language --get-cover --to-opf --from-opf --lrf-bookid"
    pics="@(jpg|jpeg|png|gif|bmp|JPG|JPEG|PNG|GIF|BMP)"

    case "${prev}" in
      --cover )
           _filedir "${pics}"
           return 0
           ;;
    esac

    case "${cur}" in
      --cover )
         _filedir "${pics}"
         return 0
         ;;
      -* )
         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
         return 0
         ;;
      *  )
        _filedir '@(azw1|rtf|prc|lrf|odt|cbr|opf|rar|cbz|lrx|txt|epub|mobi|zip|oebzip|fb2|pdb|lit|imp|html|rb|pdf|tpz|azw|AZW1|RTF|PRC|LRF|ODT|CBR|OPF|RAR|CBZ|LRX|TXT|EPUB|MOBI|ZIP|OEBZIP|FB2|PDB|LIT|IMP|HTML|RB|PDF|TPZ|AZW)'
        return 0
        ;;
    esac

}
complete -o filenames -F _ebook-meta ebook-meta

_lrfviewer()
{
    local cur prev opts
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    opts="--version -h --help --redirect-console-output --verbose --visual-debug --disable-hyphenation --white-background --profile"
    pics="@(jpg|jpeg|png|gif|bmp|JPG|JPEG|PNG|GIF|BMP)"

    case "${prev}" in
      --cover )
           _filedir "${pics}"
           return 0
           ;;
    esac

    case "${cur}" in
      --cover )
         _filedir "${pics}"
         return 0
         ;;
      -* )
         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
         return 0
         ;;
      *  )
        _filedir '@(lrf|LRF)'
        return 0
        ;;
    esac

}
complete -o filenames -F _lrfviewer lrfviewer

_web2disk()
{
    local cur opts
    local IFS=$'|\t'
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    opts="--version|-h|--help|-d|--base-dir|-t|--timeout|-r|--max-recursions|-n|--max-files|--delay|--encoding|--match-regexp|--filter-regexp|--dont-download-stylesheets|--verbose"
    words="168óra|24 Sata - Hr|24 Sata - Sr|7 dias|ATV|Accountancy Age|Adventure Gamers|The Age|Al Jazeera in English|Ambito.com|The American Spectator|Arizona  Daily Star|Ars Technica|Associated Press|The Atlantic|The Australian|Axxon noticias|B92|The BBC|BBC Vietnamese|BETA|BETA - English|Barron\'s|Blic|Borba Online|The Budget Fashionista|Buenos Aires Economico|Business Week|CNN|Carta|Chicago Breaking News|Chicago Tribune|Christian Science Monitor|Cincinnati Enquirer|Clarin|Climate Progress|Coding Horror|Common Dreams|Corriere della Sera|Corriere della Sera in English|Courrier International|Critica de la Argentina|CubaDebate|Cyberpresse|DNA India|The Daily Mail|Daily Telegraph|Danas|De Gentenaar Online|De Morgen|De Standaard|De Tijd|De Volkskrant|Diagonales|Diario Expansion|Diario Granma|Die Zeit Nachrichten|Discover Magazine|Dnevni Avaz|Dnevnik - Hr|E-Novine|EL PAIS|ESPN|EcoGeek|The Economic Times India|The Economist|The Edge Singapore|El Cronista|El Mercurio online|El Mundo|El Periodico de Catalunya|El Periodico de Catalunya|El Tiempo - Honduras|El Universal|ElArgentino.com|Engadget|Esquire|Exiled Online|FAZ NET|FTD|Fast Company|Financial Times|Forbes|Freakonomics Blog|Fudzilla|Gazet van Antwerpen|Glas Javnosti|Glas Srpske|Glasgow Herald|Globe and Mail|Google Reader|The Guardian|HLN Belgium|HNA|HRT: Vesti|Harper\'s Magazine|Harper\'s Magazine - articles from printed edition|Het Belang Van Limburg|The Hindu|Honolulu Advertiser|Honolulu Star-Bulletin|Honvedelem.hu|Hírszerző|INDEX.HU|Indianapolis Star|Infobae.com|Inquirer.net|Instapaper.com|Intelligencer|The Irish Times|The Japan Times|Jerusalem Post|Joel on Software|Jornal Brasileiro Online|Jutarnji|Juventud Rebelde|Juventud Rebelde in english|Kellog Faculty Blogs|Kellog Insight|Krstarica - Vesti|Krstarica - news in english|La Cuarta|La Mujer de mi Vida|La Nacion|La Nacion Chile|La Prensa|La Prensa - Honduras|La Prensa - Nicaragua|La Segunda|La Tercera|La Tribuna - Honduras|La Vanguardia Digital|LeMonde.fr|Liberation|Linux Magazine|Linuxdevices|Livemint|London Review of Books|The Los Angeles Times|MSDN Magazine|Marca|The Market Ticker|Mediapart|The Miami Herald|Miradas al Sur|Monde durable|Moneynews.com|Monitor online|The Moscow Times|NASA|NIN online|NOAA Online|NSPM in English|NZZ Online|Nacional - Hr|The Nation|The New Republic|New Scientist - Online News|New York Review of Books|New York Review of Books (no subscription)|The New York Times (subscription)|New York Times Top Stories|The New Yorker|NewsWeek Argentina|Newstimes|Newsweek|Nova srpska politicka misao|O Estado de S. Paulo|O Globo|The Old Foodie|The Onion|Our Daily Bread|Outlook India|PCWORLD.HU|PHD Comics|Pagina - 12|Pescanik|Philadelphia Inquirer|Physicstoday|Physicsworld|Pobjeda Online|Politico|Politika Online|Portfolio|Press Online|Público|RGA Online - German|RTS: Vesti|The Register|Republika|Reuters|Salon.com|San Francisco Chronicle|Science AAAS|ScienceDaily|ScienceNews|Scientific American|The Scotsman|Scott Hanselman\'s Computer Zen|The Seattle Times|Shacknews|Slashdot.org|Slate|Soldiers|Spiegel Online - German|Spiegel Online International|The St. Petersburg Times|Stack Overflow - Blog|The Straits Times|Supersite for Windows|Sydney Morning Herald|Süddeutsche|Tanjug|TechNet|Telegraph.co.uk|Telepolis (Artikel)|Telepolis (News)|Teleread Blog|Thanh Nien Xa Me|Time|The Times Online|Tom\'s Hardware US|Tweakers.net|Twitch Films|US & World Report news|USA Today|Uncrate|United Press International|Utne reader|Vecernje Novosti|Vecernji List|Veintitres|Vijesti|VnExpress|Vreme|WOZ Die Wochenzeitung|The Wall Street Journal|Washington Post|Wikinews|Wired.com|darknet|derStandard|diePresse|elektrolese|heise|la Repubblica|securitywatch|tomshardware|xkcd|zdnet|联合早报网 zaobao.com"

    case "${cur}" in
      -* )
         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
         COMPREPLY=( $( echo ${COMPREPLY[@]} | sed 's/ /\\ /g' | tr '\n' '\t' ) )
         return 0
         ;;
      *  )
         COMPREPLY=( $(compgen -W "${words}" -- ${cur}) )
         COMPREPLY=( $( echo ${COMPREPLY[@]} | sed 's/ /\\ /g' | tr '\n' '\t' ) )
         return 0
         ;;
    esac

}
complete -F _web2disk web2disk

_fetch-ebook-metadata()
{
    local cur opts
    local IFS=$'|\t'
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    opts="--version|-h|--help|-t|--title|-a|--author|-p|--publisher|-i|--isbn|-m|--max-results|-k|--isbndb-key|-v|--verbose"
    words=""

    case "${cur}" in
      -* )
         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
         COMPREPLY=( $( echo ${COMPREPLY[@]} | sed 's/ /\\ /g' | tr '\n' '\t' ) )
         return 0
         ;;
      *  )
         COMPREPLY=( $(compgen -W "${words}" -- ${cur}) )
         COMPREPLY=( $( echo ${COMPREPLY[@]} | sed 's/ /\\ /g' | tr '\n' '\t' ) )
         return 0
         ;;
    esac

}
complete -F _fetch-ebook-metadata fetch-ebook-metadata

_calibre-smtp()
{
    local cur opts
    local IFS=$'|\t'
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    opts="--version|-h|--help|-l|--localhost|-o|--outbox|-f|--fork|-t|--timeout|-v|--verbose|-a|--attachment|-s|--subject|-r|--relay|--port|-u|--username|-p|--password|-e|--encryption-method"
    words=""

    case "${cur}" in
      -* )
         COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
         COMPREPLY=( $( echo ${COMPREPLY[@]} | sed 's/ /\\ /g' | tr '\n' '\t' ) )
         return 0
         ;;
      *  )
         COMPREPLY=( $(compgen -W "${words}" -- ${cur}) )
         COMPREPLY=( $( echo ${COMPREPLY[@]} | sed 's/ /\\ /g' | tr '\n' '\t' ) )
         return 0
         ;;
    esac

}
complete -F _calibre-smtp calibre-smtp


_prs500_ls()
{
  local pattern search listing prefix
  pattern="$1"
  search="$1"
  if [[ -n "{$pattern}" ]]; then
    if [[ "${pattern:(-1)}" == "/" ]]; then
      pattern=""
    else
      pattern="$(basename ${pattern} 2> /dev/null)"
      search="$(dirname ${search} 2> /dev/null)"
    fi
  fi

  if [[  "x${search}" == "x" || "x${search}" == "x." ]]; then
    search="/"
  fi

  listing="$(prs500 ls ${search} 2>/dev/null)"

  prefix="${search}"
  if [[ "x${prefix:(-1)}" != "x/" ]]; then
    prefix="${prefix}/"
  fi

  echo $(compgen -P "${prefix}" -W "${listing}" "${pattern}")
}

_prs500()
{
  local cur prev
  cur="${COMP_WORDS[COMP_CWORD]}"
  prev="${COMP_WORDS[COMP_CWORD-1]}"
  COMPREPLY=()
  case "${prev}" in
    ls|rm|mkdir|touch|cat )
        COMPREPLY=( $(_prs500_ls "${cur}") )
        return 0
        ;;
    cp )
        if [[ ${cur} == prs500:* ]]; then
          COMPREPLY=( $(_prs500_ls "${cur:7}") )
          return 0
        else
          _filedir
          return 0
        fi
        ;;
    prs500 )
        COMPREPLY=( $(compgen -W "cp ls rm mkdir touch cat info books df" "${cur}") )
        return 0
        ;;
    * )
        if [[ ${cur} == prs500:* ]]; then
          COMPREPLY=( $(_prs500_ls "${cur:7}") )
          return 0
        else
          if [[ ${prev} == prs500:* ]]; then
            _filedir
            return 0
          else
            COMPREPLY=( $(compgen -W "prs500:" "${cur}") )
            return 0
          fi
          return 0
        fi
       ;;
  esac
}
complete -o nospace  -F _prs500 ebook-device

complete -o nospace -C calibre-complete ebook-convert
