| # |
| # bash-completion file for CMake |
| # Provided by Eric NOULARD - eric.noulard@gmail.com |
| # |
| # see http://bash-completion.alioth.debian.org/ |
| # and http://www.cmake.org |
| # |
| # We will try to complete cmake commands options |
| # at 2 (or may be 3 levels) |
| # [cmake|cpack|ctest] <level0> <level1> <level2> |
| # |
| # level0 is top level cmake/cpack/ctest options |
| # level1 is the first argument of level0 option |
| # level2 is the seconf argument of level1 argument |
| # FIXME: I don't know how to handle level2 |
| # |
| # The file has been proposed for inclusion in the bash-completion package |
| # https://alioth.debian.org/tracker/?func=detail&atid=413095&aid=312632&group_id=100114 |
| # In the meantime, |
| # 1) If you want to test bash completion for cmake/cpack/ctest |
| # just source the current file at bash prompt |
| # . ./cmake-completion |
| # |
| # 2) If you want to install it for good copy this file to |
| # cp cmake-completion /etc/bash_completion.d/cmake |
| # |
| |
| # |
| # cmake command |
| # |
| # have cmake && |
| _cmake() |
| { |
| local cur prev opts words cword |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| prev="${COMP_WORDS[COMP_CWORD-1]}" |
| # seems to be only available on bash-completion 1.2 |
| #_get_comp_words_by_ref cur prev |
| |
| # cmake command line option we want to complete |
| opts=`cmake --help | grep "^ \-.*=\ .*" | cut -d" " -f 3 | cut -d= -f 1 | cut -d[ -f 1` |
| |
| # |
| # Complete the arguments to some of |
| # the most commonly used commands (Level 1). |
| # |
| case "${prev}" in |
| -E) |
| local running=$(for x in `cmake -E |& grep "^ " | cut -d" " -f 3`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| # FIXME: don't know how to handle multi words completion |
| # or more precisely word that contains space in them like "Unix Makefiles" |
| # -G) |
| # local running=$(for x in `cmake --help | grep "^ .*=\ .*" | grep -v "^ -" | cut -d"=" -f 1 | grep -v "^ "`; do echo \"${x}\" ; done ) |
| # COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| # return 0 |
| # ;; |
| --help-command) |
| local running=$(for x in `cmake --help-command-list | grep -v "cmake version"`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| --help-module) |
| local running=$(for x in `cmake --help-module-list | grep -v "cmake version"`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| --help-policy) |
| local running=$(for x in `cmake --help-policies | grep "^ CMP"`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| --help-property) |
| local running=$(for x in `cmake --help-property-list | grep -v "cmake version"`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| --help-variable) |
| local running=$(for x in `cmake --help-variable-list | grep -v "cmake version"`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| *) |
| ;; |
| esac |
| |
| # |
| # Complete the arguments to some of |
| # the most commonly used commands (Level 2). |
| # ?? How to do that .. |
| |
| # |
| # Complete the option (Level 0 - right after cmake) |
| # |
| COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) |
| } && |
| complete -F _cmake -o default cmake |
| |
| # |
| # cpack command |
| # |
| #have cpack && |
| _cpack() |
| { |
| local cur prev opts words cword |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| prev="${COMP_WORDS[COMP_CWORD-1]}" |
| # seems to be only available on bash-completion 1.2 |
| #_get_comp_words_by_ref cur prev |
| |
| # cpack command line option we want to complete |
| opts=`cpack --help | grep "^ \-.*=\ .*" | cut -d" " -f 3 | cut -d= -f 1` |
| opts="${opts} --help -V" |
| |
| # |
| # Complete the arguments to some of |
| # the most commonly used commands (Level 1). |
| # |
| case "${prev}" in |
| -G) |
| local running=$(for x in `cpack --help | grep "^ .*=\ .*" | grep -v "^ -" | cut -d" " -f 3`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| --config) |
| COMPREPLY=( $(compgen -f ${cur}) ) |
| return 0 |
| ;; |
| --help-variable) |
| local running=$(for x in `cpack --help-variable-list | grep -v "cpack version" `; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| --help-command) |
| local running=$(for x in `cpack --help-command-list | grep -v "cpack version" `; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| *) |
| ;; |
| esac |
| |
| # |
| # Complete the option (Level 0 - right after cpack) |
| # |
| COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) |
| } && |
| complete -F _cpack -o default cpack |
| |
| # |
| # ctest command |
| # |
| # have ctest && |
| _ctest() |
| { |
| local cur prev opts words cword |
| COMPREPLY=() |
| cur="${COMP_WORDS[COMP_CWORD]}" |
| prev="${COMP_WORDS[COMP_CWORD-1]}" |
| # seems to be only available on bash-completion 1.2 |
| #_get_comp_words_by_ref cur prev |
| |
| # cmake command line option we want to complete |
| opts=`ctest --help | grep "\-\-.*" | cut -d" " -f 3 | sed s/,/\\\n/g` |
| |
| # |
| # Complete the arguments to some of |
| # the most commonly used commands (Level 1). |
| # |
| case "${prev}" in |
| --help-command) |
| local running=$(for x in `ctest --help-command-list | grep -v "ctest version" `; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| -R|-E) |
| local running=$(for x in `ctest -N 2> /dev/null | grep "^ Test" | cut -d: -f 2`; do echo ${x} ; done ) |
| COMPREPLY=( $(compgen -W "${running}" -- ${cur}) ) |
| return 0 |
| ;; |
| *) |
| ;; |
| esac |
| |
| # |
| # Complete the arguments to some of |
| # the most commonly used commands (Level 2). |
| # ?? How to do that .. |
| |
| # |
| # Complete the option (Level 0 - right after cmake) |
| # |
| COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) |
| } && |
| complete -F _ctest -o default ctest |
| |
| # Local variables: |
| # mode: shell-script |
| # sh-basic-offset: 4 |
| # sh-indent-comment: t |
| # indent-tabs-mode: nil |
| # End: |
| # ex: ts=4 sw=4 et filetype=sh |