diff options
author | Doug Hellmann <doug.hellmann@gmail.com> | 2013-11-12 14:35:56 -0800 |
---|---|---|
committer | Doug Hellmann <doug.hellmann@gmail.com> | 2013-11-12 14:35:56 -0800 |
commit | 60361edf68cf5822d96e215d71fe14260df01ec4 (patch) | |
tree | 1a66514ca3e02371e82eb7ba75579344c31c538c /docs/source/complete.rst | |
parent | ff3ac6435ba27a29cdc015d0d7df45c245a7a5e2 (diff) | |
parent | 9a64d4fa683321e0ec8a76aeba064ff04ca5e0c5 (diff) | |
download | cliff-60361edf68cf5822d96e215d71fe14260df01ec4.tar.gz |
Merge pull request #9 from TerryHowe/master
add bash complete
Diffstat (limited to 'docs/source/complete.rst')
-rw-r--r-- | docs/source/complete.rst | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/docs/source/complete.rst b/docs/source/complete.rst new file mode 100644 index 0000000..2a08098 --- /dev/null +++ b/docs/source/complete.rst @@ -0,0 +1,45 @@ +==================== + Command Completion +==================== + +A generic command completion command is available to generate a +bash-completion script. Currently, the command will generate a script +for bash versions 3 or 4. There is also a mode that generates only +data that can be used in your own script. The command completion script +is generated based on the commands and options that you have specified +in cliff. + +Usage +===== + +In order for your command to support command completions, you need to +add the `cliff.complete.CompleteCommand` class to your command manager. + +:: + + self.command_manager.add_command('complete', cliff.complete.CompleteCommand) + +When you run the command, it will generate a bash-completion script: + +:: + + (.venv)$ mycmd complete + _mycmd() + { + local cur prev words + COMPREPLY=() + _get_comp_words_by_ref -n : cur prev words + + # Command data: + cmds='agent aggregate backup' + cmds_agent='--name' + ... + if [ -z "${completed}" ] ; then + COMPREPLY=( $( compgen -f -- "$cur" ) $( compgen -d -- "$cur" ) ) + else + COMPREPLY=( $(compgen -W "${completed}" -- ${cur}) ) + fi + return 0 + } + complete -F _mycmd mycmd + |