# 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 --no-update-check --ignore-plugins -s --shutdown-running-calibre" 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|lrf|snb|EPUB|HTM|HTML|XHTML|XHTM|RAR|ZIP|TXT|LIT|RTF|PDF|PRC|MOBI|FB2|ODT|LRF|SNB)' 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 -d --date --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 '@(fb2|rtf|snb|rb|prc|azw1|odt|cbr|cbz|opf|pdb|rar|pml|lrx|htmlz|txt|epub|mobi|zip|oebzip|lrf|chm|pmlz|lit|imp|html|txtz|pdf|tpz|azw|FB2|RTF|SNB|RB|PRC|AZW1|ODT|CBR|CBZ|OPF|PDB|RAR|PML|LRX|HTMLZ|TXT|EPUB|MOBI|ZIP|OEBZIP|LRF|CHM|PMLZ|LIT|IMP|HTML|TXTZ|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 _ebook_viewer() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="--version -h --help --raise-window -f --full-screen --fullscreen --debug-javascript" 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|lrf|snb|EPUB|HTM|HTML|XHTML|XHTM|RAR|ZIP|TXT|LIT|RTF|PDF|PRC|MOBI|FB2|ODT|LRF|SNB|EPUB|HTM|HTML|XHTML|XHTM|RAR|ZIP|TXT|LIT|RTF|PDF|PRC|MOBI|FB2|ODT|LRF|SNB|EPUB|HTM|HTML|XHTML|XHTM|RAR|ZIP|TXT|LIT|RTF|PDF|PRC|MOBI|FB2|ODT|LRF|SNB)' return 0 ;; esac } complete -o filenames -F _ebook_viewer ebook-viewer _fetch_ebook_metadata() { local cur opts local IFS=$'|\t' COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" opts="--version|-h|--help|-t|--title|-a|--authors|-i|--isbn|-v|--verbose|-o|--opf|-c|--cover|-d|--timeout" 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 _calibre_server() { local cur opts local IFS=$'|\t' COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" opts="--version|-h|--help|-p|--port|-t|--timeout|--thread-pool|--password|--username|--develop|--max-cover|--max-opds-items|--max-opds-ungrouped-items|--url-prefix|--with-library|--pidfile|--daemonize|--restriction|--auto-reload" 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_server calibre-server _epub_fix() { local cur prev opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" opts="--version -h --help --unmanifested --delete-unmanifested --epubcheck" 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|EPUB)' return 0 ;; esac } complete -o filenames -F _epub_fix epub-fix _ebook_device_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="$(ebook-device ls ${search} 2>/dev/null)" prefix="${search}" if [[ "x${prefix:(-1)}" != "x/" ]]; then prefix="${prefix}/" fi echo $(compgen -P "${prefix}" -W "${listing}" "${pattern}") } _ebook_device() { local cur prev cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" COMPREPLY=() case "${prev}" in ls|rm|mkdir|touch|cat ) COMPREPLY=( $(_ebook_device_ls "${cur}") ) return 0 ;; cp ) if [[ ${cur} == prs500:* ]]; then COMPREPLY=( $(_ebook_device_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=( $(_ebook_device_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 _ebook_device ebook-device complete -o nospace -C calibre-complete ebook-convert