diff --git a/CHANGES b/CHANGES index 17d582c3..496d62b4 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ + [ Guillaume Rousse ] + * gphoto2: new completion + bash-completion (2.0) [ Anthony Ramine ] diff --git a/completions/gphoto2 b/completions/gphoto2 new file mode 100644 index 00000000..02ddf785 --- /dev/null +++ b/completions/gphoto2 @@ -0,0 +1,51 @@ +# bash completion for gphoto2(1) -*- shell-script -*- + +_gphoto2() +{ + local cur prev words cword split + _init_completion -s || return + + case $prev in + --debug-logfile) + _filedir + return 0 + ;; + --hook-script) + _filedir + return 0 + ;; + --filename) + _filedir + return 0 + ;; + -u|--upload-file) + _filedir + return 0 + ;; + --port) + COMPREPLY=( $(compgen -W "$( gphoto2 --list-ports 2>/dev/null | \ + tail -n +4 | awk '{ print $1 }' )" -- "$cur") ) + return 0 + ;; + --camera) + local IFS=$'\n' + COMPREPLY=( $(compgen -W "$( gphoto2 --list-cameras 2>/dev/null | \ + tail -n +3 | awk -F'"' '{ print $2 }' )" -- "$cur") ) + return 0 + ;; + --get-config|--set-config|--set-config-index|--set-config-value) + COMPREPLY=( $(compgen -W "$( gphoto2 --list-config 2>/dev/null \ + )" -- "$cur") ) + return 0 + ;; + esac + + if [[ "$cur" == -* ]]; then + COMPREPLY=( $( compgen -W '$( _parse_help "$1" )' -- "$cur" ) ) + return 0 + fi + +} && +complete -F _gphoto2 gphoto2 + +# ex: ts=4 sw=4 et filetype=sh diff --git a/test/completion/gphoto2.exp b/test/completion/gphoto2.exp new file mode 100644 index 00000000..1eab94b0 --- /dev/null +++ b/test/completion/gphoto2.exp @@ -0,0 +1 @@ +assert_source_completions gphoto2 diff --git a/test/lib/completions/gphoto2.exp b/test/lib/completions/gphoto2.exp new file mode 100644 index 00000000..90dc1e5e --- /dev/null +++ b/test/lib/completions/gphoto2.exp @@ -0,0 +1,18 @@ +proc setup {} { + save_env +} + + +proc teardown {} { + assert_env_unmodified +} + + +setup + + +assert_complete_any "gphoto2 --" +sync_after_int + + +teardown